Domanda Determina la versione di PowerShell installata


Come posso determinare quale versione di PowerShell è installata su un computer e, in effetti, se è installata?


2076
2017-12-01 11:30


origine


risposte:


Uso $PSVersionTable.PSVersion per determinare la versione del motore. Se la variabile non esiste, è sicuro che il motore sia la versione 1.0.

Nota che $Host.Version e (Get-Host).Version non sono affidabili - riflettono solo la versione dell'host, non il motore. PowerGUI, PowerShellPLUS, ecc. Sono tutte applicazioni di hosting e imposteranno la versione dell'host in modo che rifletta il loro prodotto versione - che è completamente corretta, ma non è ciò che stai cercando.

PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1

2793
2018-01-19 11:06



Io userei entrambi Get-Host o $ PSVersionTable. Come sottolinea Andy Schneider, $PSVersionTable non funziona nella versione 1; è stato introdotto nella versione 2.

get-host

Name             : ConsoleHost
Version          : 2.0
InstanceId       : d730016e-2875-4b57-9cd6-d32c8b71e18a
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-GB
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

$PSVersionTable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.4200
BuildVersion                   6.0.6002.18111
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

371
2017-12-01 11:34



Per determinare se PowerShell è installato, è possibile controllare il registro per l'esistenza di

HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install

e

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3

e, se esiste, se il valore è 1 (per installato), come dettagliato nel post del blog Verifica se PowerShell è installato e versione.

Per determinare la versione di PowerShell installata, è possibile controllare le chiavi di registro

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion

e

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion

Per determinare la versione di PowerShell installata da uno script .ps1, è possibile utilizzare il seguente one-liner, come descritto in dettaglio su PowerShell.com in Quale versione di PowerShell sono in esecuzione.

$isV2 = test-path variable:\psversiontable

Lo stesso sito fornisce anche una funzione per restituire la versione:

function Get-PSVersion {
    if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}

86
2017-12-01 14:37



Puoi guardare la variabile integrata, $psversiontable. Se non esiste, hai V1. Se esiste, ti darà tutte le informazioni di cui hai bisogno.

1 >  $psversiontable

Name                           Value                                           
----                           -----                                           
CLRVersion                     2.0.50727.4927                                  
BuildVersion                   6.1.7600.16385                                  
PSVersion                      2.0                                             
WSManStackVersion              2.0                                             
PSCompatibleVersions           {1.0, 2.0}                                      
SerializationVersion           1.1.0.1                                         
PSRemotingProtocolVersion      2.1    

77
2018-04-25 13:47



Voglio solo aggiungere i miei 2 centesimi qui.

È possibile controllare direttamente la versione con una sola riga invocando PowerShell esternamente, ad esempio dal prompt dei comandi

powershell -Command "$PSVersionTable.PSVersion"

MODIFICARE:

Secondo @psaul tu può in realtà hanno un comando che è agnostico da dove proviene (CMD, Powershell o Pwsh), grazie per quello.

powershell -command "(Get-Variable PSVersionTable -ValueOnly).PSVersion" 

Ho provato e ha funzionato perfettamente sia su CMD che su PowerShell

image


23
2018-03-10 11:32



È possibile verificare che la versione di Windows PowerShell sia stata installata completando il seguente controllo:

  1. Fare clic su Start, scegliere Tutti i programmi, fare clic su Accessori, fare clic su Windows PowerShell e quindi fare clic su Windows PowerShell.
  2. Nella console di Windows PowerShell, digitare il seguente comando al prompt dei comandi e quindi premere INVIO:

    Get-Host | Select-Object Version

Vedrai un output che assomiglia a questo:

Version
-------
3.0

http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/


19
2018-06-17 07:59



Il metodo Microsoft compatibile in avanti raccomandato per verificare se PowerShell è installato e determinare la versione installata è quello di esaminare due chiavi di registro specifiche. Ho riprodotto i dettagli qui nel caso in cui il link si interrompe.

Secondo la pagina collegata:

A seconda delle altre chiavi del Registro di sistema o della versione di PowerShell.exe o del percorso di PowerShell.exe non è garantito il funzionamento a lungo termine.

Per verificare se qualsiasi versione di PowerShell è installato, verificare il seguente valore nel Registro di sistema:

  • Posizione chiave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
  • Nome valore: Installa
  • Tipo di valore: REG_DWORD
  • Dati valore: 0x00000001 (1

Controllare se versione 1.0 o 2.0 di PowerShell è installato, verificare il seguente valore nel Registro di sistema:

  • Posizione chiave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
  • Nome valore: PowerShellVersion
  • Tipo di valore: REG_SZ
  • Dati valore: <1,0 | 2.0>

18
2017-11-04 10:24



Ho trovato il modo più semplice per verificare se fosse installato:

  • eseguire un prompt dei comandi (Start, Esegui, cmd, allora OK)
  • genere powershell poi colpisci il ritorno. Dovresti quindi ottenere il PowerShell PS richiesta:

C:\Users\MyUser>powershell

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS C:\Users\MyUser>

È quindi possibile controllare la versione dal prompt di PowerShell digitando $PSVersionTable.PSVersion:

PS C:\Users\MyUser> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1

PS C:\Users\MyUser>

genere exit se vuoi tornare al prompt dei comandi (exit di nuovo se vuoi chiudere anche il prompt dei comandi).

Per eseguire gli script, vedere http://ss64.com/ps/syntax-run.html.


11
2017-12-01 11:35



Per verificare se PowerShell è installato, utilizzare:

HKLM\Software\Microsoft\PowerShell\1 Install ( = 1 )

Per verificare se RC2 o RTM è installato, utilizzare:

HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-00301) -- For RC2
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-04309) -- For RTM

Fonte: questo sito web.


8
2017-11-01 01:41



Uso:

$psVersion = $PSVersionTable.PSVersion
If ($psVersion)
{
    #PowerShell Version Mapping
    $psVersionMappings = @()
    $psVersionMappings += New-Object PSObject -Property @{Name='5.1.14393.0';FriendlyName='Windows PowerShell 5.1 Preview';ApplicableOS='Windows 10 Anniversary Update'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.1.14300.1000';FriendlyName='Windows PowerShell 5.1 Preview';ApplicableOS='Windows Server 2016 Technical Preview 5'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.494';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3172985 1607'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.122';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3140743 1603'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.117';FriendlyName='Windows PowerShell 5 RTM 1602';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.63';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3135173 1602'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.51';FriendlyName='Windows PowerShell 5 RTM 1512';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10514.6';FriendlyName='Windows PowerShell 5 Production Preview 1508';ApplicableOS='Windows Server 2012 R2'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10018.0';FriendlyName='Windows PowerShell 5 Preview 1502';ApplicableOS='Windows Server 2012 R2'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.9883.0';FriendlyName='Windows PowerShell 5 Preview November 2014';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows 8.1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='4.0';FriendlyName='Windows PowerShell 4 RTM';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='3.0';FriendlyName='Windows PowerShell 3 RTM';ApplicableOS='Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8, and Windows 7 SP1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='2.0';FriendlyName='Windows PowerShell 2 RTM';ApplicableOS='Windows Server 2008 R2 SP1 and Windows 7'}
    foreach ($psVersionMapping in $psVersionMappings)
    {
        If ($psVersion -ge $psVersionMapping.Name) {
            @{CurrentVersion=$psVersion;FriendlyName=$psVersionMapping.FriendlyName;ApplicableOS=$psVersionMapping.ApplicableOS}
            Break
        }
    }
}
Else{
    @{CurrentVersion='1.0';FriendlyName='Windows PowerShell 1 RTM';ApplicableOS='Windows Server 2008, Windows Server 2003, Windows Vista, Windows XP'}
}

Puoi scaricare lo script dettagliato da Come determinare la versione di PowerShell installata.


8
2018-04-17 20:46