Seit die PowerShell-Versionen 6.1 unter Windows/Linux/OSX auf GA umgestellt wurden, können Sie die neuen Eigenschaften von $PSVersionTable
verwenden , OS
, Platform
und GitCommitId
Aktualisieren In v6.0.0-beta.3 gibt es einige breaking changes
:
- Positionsparameter für powershell.exe von -Command zu -File ändern
$PSVersionTable
auf :
Plattform Win32NT
Betriebssystem 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
Plattform Unix
Betriebssystem 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
Plattform Unix
Betriebssystem 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
Eigentlich sollten globale Variablen von der PowerShell-Konsole selbst hinzugefügt werden – sie gelten jedoch nicht als Umgebungsvariablen, weshalb sie bei Verwendung von dir env:
nicht angezeigt würden um eine Liste zu erhalten. Die betriebssystemspezifischen, die ich im Moment sehe, sind $IsLinux
, IsMacOS
und $IsWindows
. Dies ist mindestens PowerShell-Version 6.0.0-rc und höher für Mac/Linux.
Sie können eine Liste der verfügbaren Produkte anzeigen, indem Sie einfach Get-Variable
verwenden (in einer neuen Sitzung ohne Laden Ihres Profils, wenn Sie nur das wollen, was standardmäßig eingebaut ist).
Für PowerShell Core (Powershell-Version 6.0+) können Sie automatische Variablen verwenden:$IsLinux
, $IsMacOS
und $IsWindows
.
Zum Beispiel
if ($IsLinux) {
Write-Host "Linux"
}
elseif ($IsMacOS) {
Write-Host "macOS"
}
elseif ($IsWindows) {
Write-Host "Windows"
}
Gibt es keine Umgebungsvariablen, die Sie auf den anderen Plattformen für das Betriebssystem anzeigen können?
Get-ChildItem -Path Env:
Zumindest unter Windows gibt es eine Betriebssystem-Umgebungsvariable, also sollten Sie Dies können Sie mit $Env:OS
erreichen .
Da ist einige Zeit vergangen und der PowerShell Core (v6) Produkt ist jetzt GA (der Kern Branding wurde ab v7 entfernt), können Sie Ihre Plattform anhand der folgenden automatischen booleschen Variablen genauer bestimmen:
$IsMacOS
$IsLinux
$IsWindows