Poiché le versioni 6.1 di PowerShell su Windows/Linux/OSX sono passate a GA, puoi utilizzare le nuove proprietà di $PSVersionTable
, OS
, Platform
e GitCommitId
Aggiorna Nella v6.0.0-beta.3 ci sono alcuni breaking changes
:
- Modifica il parametro posizionale per powershell.exe da -Command a -File
$PSVersionTable
su :
Piattaforma Win32NT
OS Microsoft Windows 10.0.15063
PS C:\Users\LotPings> $PSVersionTable
Name Value
---- -----
PSVersion 6.1.0
PSEdition Core
GitCommitId 6.1.0
OS Microsoft Windows 10.0.17134
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Piattaforma Unix
OS Linux (ubuntu)
PS /home/LotPings> $PSVersionTable
Name Value
---- -----
PSVersion 6.1.0
PSEdition Core
GitCommitId 6.1.0
OS Linux 4.15.0-34-generic #37-Ubuntu SMP Mon Aug 27 15:21:48 UTC 2018
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Piattaforma Unix
Sistema operativo Darwin
PS /Users/LotPings> $PSVersionTable
Name Value
---- -----
PSVersion 6.1.0
PSEdition Core
GitCommitId 6.1.0
OS Darwin 17.7.0 Darwin Kernel Version 17.7.0: Thu Jun 21 22:53:14 PDT 2018; root:xnu-4570.71.2~1/RE...
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
In realtà, dovrebbero esserci delle variabili globali aggiunte dalla console di PowerShell stessa, ma non sono considerate variabili di ambiente, motivo per cui non verrebbero visualizzate quando si utilizza dir env:
per ottenere un elenco. Quelli specifici del sistema operativo che vedo per ora sono $IsLinux
, IsMacOS
e $IsWindows
. Questo è almeno della versione 6.0.0-rc di PowerShell e successive per Mac/Linux.
Puoi vedere un elenco di ciò che è disponibile usando solo Get-Variable
(in una nuova sessione senza caricare il tuo profilo, se vuoi solo ciò che viene integrato per impostazione predefinita).
Per PowerShell Core (Powershell versione 6.0+), puoi utilizzare le variabili automatiche:$IsLinux
, $IsMacOS
e $IsWindows
.
Ad esempio,
if ($IsLinux) {
Write-Host "Linux"
}
elseif ($IsMacOS) {
Write-Host "macOS"
}
elseif ($IsWindows) {
Write-Host "Windows"
}
Non ci sono variabili di ambiente che puoi visualizzare sulle altre piattaforme per il sistema operativo?
Get-ChildItem -Path Env:
In particolare, almeno su Windows, esiste una variabile di ambiente del sistema operativo, quindi dovresti essere in grado di farlo usando $Env:OS
.
Da qualche tempo è passato e il PowerShell Core (v6) ora è GA (il prodotto Core il branding è stato abbandonato a partire dalla v7), puoi determinare con maggiore precisione la tua piattaforma in base alle seguenti variabili booleane automatiche:
$IsMacOS
$IsLinux
$IsWindows