Protože PowerShell verze 6.1 na Windows/Linux/OSX přešel na GA, můžete použít nové vlastnosti $PSVersionTable
, OS
, Platform
a GitCommitId
Aktualizovat Ve verzi 6.0.0-beta.3 existuje několik breaking changes
:
- Změňte poziční parametr pro powershell.exe z -Command na -File
$PSVersionTable
dne :
Platforma 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
Platforma 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
Platforma Unix
OS 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
Ve skutečnosti by měly být globální proměnné přidány samotnou konzolí PowerShell – nejsou však považovány za proměnné prostředí, a proto by se při použití dir env:
nezobrazovaly. získat seznam. Ty specifické pro operační systém, které nyní vidím, jsou $IsLinux
, IsMacOS
a $IsWindows
. Toto je minimálně PowerShell verze 6.0.0-rc a vyšší pro Mac/Linux.
Seznam toho, co je k dispozici, můžete zobrazit pomocí pouhého Get-Variable
(v nové relaci bez načítání vašeho profilu, pokud chcete pouze to, co je standardně integrováno).
Pro PowerShell Core (Powershell verze 6.0+) můžete použít automatické proměnné:$IsLinux
, $IsMacOS
a $IsWindows
.
Například,
if ($IsLinux) {
Write-Host "Linux"
}
elseif ($IsMacOS) {
Write-Host "macOS"
}
elseif ($IsWindows) {
Write-Host "Windows"
}
Nejsou nějaké proměnné prostředí, které můžete zobrazit na jiných platformách pro OS?
Get-ChildItem -Path Env:
Zejména v systému Windows existuje proměnná prostředí OS, takže byste měli být schopni toho dosáhnout pomocí $Env:OS
.
Uplynul nějaký čas a jádro PowerShell (v6) je nyní produkt GA (jádro branding byl zrušen od verze 7), můžete svou platformu přesněji určit na základě následujících automatických booleovských proměnných:
$IsMacOS
$IsLinux
$IsWindows