Come ottenere la versione di PowerShell

  1. Usa la proprietà $PSVersionTable.PSVersion per ottenere la versione di PowerShell
  2. Usa la proprietà (Get-Host).Version per ottenere la versione di PowerShell
  3. Usa la proprietà $host.Version per ottenere la versione di PowerShell
  4. Usa il registro per ottenere la versione di PowerShell
Abbiamo creato un video dettagliato su YouTube per accompagnare questo articolo, incorporato qui sotto!
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
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.