如何在 powershell 中检测 Linux 或 macOS 或 Windows?
How to detect Linux or macOS or Windows in powershell?
我在 bash 脚本中使用 uname -s
来确定 OS 和它 returns Linux,达尔文或 MINGW64_NT...当 Linux、macOS 或 Windows.
上的 运行
EDIT0 :我希望我的 $PROFILE
脚本检测 OS 是否 运行 在 Windows 和 PS 上(版本可能低于 6 ) 或 Linux 且 PSv>=6.
我在 powershell 中找到了这个:
PS> [System.Environment]::OSVersion.Platform
在 Linux 上,它 returns Unix
,在 64 位 Windows 上,它 returns Win32NT
.
我没有 macOS 可供使用(还没有:))所以我不知道 macreturns 在 macOS.
EDIT1:此方法在 Unix
和 Linux
或 Windows32b 和 Windows64b 之间似乎没有区别。
还有哪些其他方法可以检测 powershell 5.1 中的 OS?
问题是 Powershell 5.1。
此处有更多详细信息:
Powershell 5.1 没有能力也无法在 Microsoft 环境之外确定 OS。你能做的最好的就是使用 get-wmi 或 cim-session
windows
!windows
对于PowerShell Core (Powershell Version 6.0+),您可以使用自动变量:
$IsLinux
$IsMacOS
$IsWindows
使用 6+ 你可以做一些事情来达到以下效果:
foreach ($i in $info) {
if ($i -eq $IsLinux) {
Write-Host $i is Linux
}
elseif ($i -eq $IsMacOS) {
Write-Host $i is This is a dirty, dirty Mac
}
elseif ($i -eq $IsWindows) {
Write-Host $i is Windows
}
}
为了结束这个问题,您所要求的对于 PowerShell 5.1 来说根本不可能/可能不值得付出努力。
我在 bash 脚本中使用 uname -s
来确定 OS 和它 returns Linux,达尔文或 MINGW64_NT...当 Linux、macOS 或 Windows.
EDIT0 :我希望我的 $PROFILE
脚本检测 OS 是否 运行 在 Windows 和 PS 上(版本可能低于 6 ) 或 Linux 且 PSv>=6.
我在 powershell 中找到了这个:
PS> [System.Environment]::OSVersion.Platform
在 Linux 上,它 returns Unix
,在 64 位 Windows 上,它 returns Win32NT
.
我没有 macOS 可供使用(还没有:))所以我不知道 macreturns 在 macOS.
EDIT1:此方法在 Unix
和 Linux
或 Windows32b 和 Windows64b 之间似乎没有区别。
还有哪些其他方法可以检测 powershell 5.1 中的 OS?
问题是 Powershell 5.1。
此处有更多详细信息:
Powershell 5.1 没有能力也无法在 Microsoft 环境之外确定 OS。你能做的最好的就是使用 get-wmi 或 cim-session
windows
!windows
对于PowerShell Core (Powershell Version 6.0+),您可以使用自动变量:
$IsLinux
$IsMacOS
$IsWindows
使用 6+ 你可以做一些事情来达到以下效果:
foreach ($i in $info) {
if ($i -eq $IsLinux) {
Write-Host $i is Linux
}
elseif ($i -eq $IsMacOS) {
Write-Host $i is This is a dirty, dirty Mac
}
elseif ($i -eq $IsWindows) {
Write-Host $i is Windows
}
}
为了结束这个问题,您所要求的对于 PowerShell 5.1 来说根本不可能/可能不值得付出努力。