HOWTO · PowerShell

Come ottenere la versione di PowerShell

Questo articolo introduce come ottenere la versione di PowerShell.

PowerShell è un tipo di prompt dei comandi che è più complesso. Viene fornito con un grande numero di cmdlets preparati e la possibilità di sfruttare il framework .NET/C# in vari scenari. PowerShell ISE è un’interfaccia utente grafica per il debug e la modifica di script su Windows. In PowerShell, la stessa cosa può essere fatta in diversi modi. Quindi principalmente, ci sono quattro modi per ottenere la versione di PowerShell, e sono indicati di seguito.

Usa la proprietà $PSVersionTable.PSVersion per ottenere la versione di PowerShell

Quindi il primo metodo che stiamo esaminando è l’attributo PSVersion nella variabile automatica $PSVersionTable. Qui, rappresenta il motore di PowerShell.

PS52> $PSVersionTable.PSVersion

Output:

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      19041  1320

$PSVersionTable è una hash-table di sola lettura che fornisce informazioni sulla versione del motore di PowerShell così come sulla PSEdition. Questo parametro può essere Desktop o Core, e ti fornirà informazioni aggiuntive sull’edizione di PowerShell che stai utilizzando.

La variabile automatica $PSVersionTable è accurata localmente quanto lo sarebbe remotamente. Nell’esempio qui sotto, racchiudere $PSVersionTable.PSVersion all’interno di un blocco di script e eseguirlo su una macchina remota restituisce la stessa versione.

PS> Invoke-Command -ComputerName 11.0.0.3 -ScriptBlock {$PSVersionTable.PSVersion} -Credential $cred

Output:

Usa la proprietà $PSVersionTable.PSVersion per ottenere la versione di PowerShell

Usa la proprietà (Get-Host).Version per ottenere la versione di PowerShell

L’idea degli host è utilizzata in PowerShell. Non è il motore di PowerShell a causare il problema. Gli host di PowerShell sono editor console/codice di PowerShell con un terminale integrato. L’host potrebbe avere un’edizione totalmente autonoma di PowerShell.

Quando si usa (Get-Host).Version, restituisce un numero di versione simile a quello della versione di PowerShell.

PS52> (Get-Host).Version

Output:

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      19041  1320

Tuttavia, la versione di Get-Host nel terminale integrato non è sempre la stessa. Anche se l’host normalmente rappresenta la stessa edizione del motore di PowerShell, questo non è sempre il caso. Quando Get-Host viene chiamato su un computer locale, restituisce sempre la stessa versione ma mai sui sistemi remoti.

Pertanto, usare Get-Host per tutto è una pessima idea.

Usa la proprietà $host.Version per ottenere la versione di PowerShell

$host.Version è un altro metodo per ottenere la versione del motore di PowerShell. Get-Host fornisce lo stesso risultato della variabile $host, una variabile completamente automatica.

PS52> $host.Version

Output:

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      19041  1320

Questo è piuttosto simile al metodo Get-host.

Usa il registro per ottenere la versione di PowerShell

Puoi anche controllare il registro solo se non sei interessato a lanciare PowerShell. L’edizione di PowerShell è memorizzata nel percorso della chiave di registro come segue HKLM:\SOFTWARE\Microsoft\PowerShell\3\ e anche come valore. Get-ItemProperty può essere usato per fare riferimento al valore PowerShellVersion in questa voce di registro.

PS51> (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

Output:

5.1.19041.1