Depuis que les versions 6.1 de PowerShell sur Windows/Linux/OSX sont passées en GA, vous pouvez utiliser les nouvelles propriétés de $PSVersionTable
, OS
, Platform
et GitCommitId
Mettre à jour Dans la v6.0.0-beta.3, il y a quelques breaking changes
:
- Modifier le paramètre positionnel pour powershell.exe de -Command à -File
$PSVersionTable
sur :
Plate-forme Win32NT
SE 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
Plate-forme Unix
Système d'exploitation 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
Plate-forme 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
En fait, il devrait y avoir des variables globales ajoutées par la console PowerShell elle-même - elles ne sont cependant pas considérées comme des variables d'environnement, c'est pourquoi elles ne s'afficheraient pas lors de l'utilisation de dir env:
pour obtenir une liste. Ceux spécifiques au système d'exploitation que je vois pour l'instant sont $IsLinux
, IsMacOS
et $IsWindows
. Il s'agit d'au moins PowerShell version 6.0.0-rc et supérieure pour Mac/Linux.
Vous pouvez voir une liste de ce qui est disponible en utilisant simplement Get-Variable
(dans une nouvelle session sans charger votre profil, si vous voulez juste ce qui est intégré par défaut).
Pour PowerShell Core (Powershell Version 6.0+), vous pouvez utiliser les variables automatiques :$IsLinux
, $IsMacOS
et $IsWindows
.
Par exemple,
if ($IsLinux) {
Write-Host "Linux"
}
elseif ($IsMacOS) {
Write-Host "macOS"
}
elseif ($IsWindows) {
Write-Host "Windows"
}
N'y a-t-il pas de variables d'environnement que vous pouvez afficher sur les autres plates-formes pour le système d'exploitation ?
Get-ChildItem -Path Env:
En particulier, sous Windows au moins, il existe une variable d'environnement du système d'exploitation, vous devriez donc être capable d'accomplir cela en utilisant $Env:OS
.
Depuis un certain temps a passé et le PowerShell Core (v6) le produit est maintenant GA (le Core la marque a été supprimée à partir de la v7), vous pouvez déterminer plus précisément votre plate-forme en fonction des variables booléennes automatiques suivantes :
$IsMacOS
$IsLinux
$IsWindows