Karena PowerShell versi 6.1 di Windows/Linux/OSX beralih ke GA, Anda dapat menggunakan properti baru $PSVersionTable
, OS
, Platform
dan GitCommitId
Perbarui Di v6.0.0-beta.3 ada beberapa breaking changes
:
- Ubah parameter posisi untuk powershell.exe dari -Command ke -File
$PSVersionTable
pada :
Platform 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
Platform 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
Platform 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
Sebenarnya, harus ada variabel global yang ditambahkan oleh konsol PowerShell itu sendiri--mereka tidak dianggap sebagai variabel lingkungan, itulah sebabnya mereka tidak muncul saat menggunakan dir env:
untuk mendapatkan daftar. OS khusus yang saya lihat untuk saat ini adalah $IsLinux
, IsMacOS
dan $IsWindows
. Ini setidaknya PowerShell versi 6.0.0-rc dan yang lebih baru untuk Mac/Linux.
Anda dapat melihat daftar yang tersedia hanya dengan menggunakan Get-Variable
(dalam sesi baru tanpa memuat profil Anda, jika Anda hanya menginginkan apa yang disertakan secara default).
Untuk PowerShell Core (Powershell Versi 6.0+), Anda dapat menggunakan Variabel Otomatis:$IsLinux
, $IsMacOS
dan $IsWindows
.
Misalnya,
if ($IsLinux) {
Write-Host "Linux"
}
elseif ($IsMacOS) {
Write-Host "macOS"
}
elseif ($IsWindows) {
Write-Host "Windows"
}
Apakah tidak ada variabel lingkungan yang dapat Anda lihat di platform lain untuk OS?
Get-ChildItem -Path Env:
Khususnya, setidaknya di Windows, ada variabel lingkungan OS, jadi Anda harus dapat melakukannya dengan menggunakan $Env:OS
.
Sejak beberapa waktu telah berlalu dan PowerShell Core (v6) produk sekarang adalah GA (Inti branding telah dihapus mulai v7), Anda dapat menentukan platform dengan lebih akurat berdasarkan variabel boolean otomatis berikut:
$IsMacOS
$IsLinux
$IsWindows