0

uname -s在 bash 脚本中使用来确定操作系统,当它在 Linux、macOS 或 Windows 上运行时,它会返回 Linux、Darwin 或 MINGW64_NT...。

EDIT0:我希望我的$PROFILE脚本检测操作系统是在 Windows 上运行 PS(版本可能低于 6)还是在 Linux 上运行 PSv>=6。

我在 powershell 中找到了这个:

PS> [System.Environment]::OSVersion.Platform

在 Linux 上,它返回Unix,在 64 位 Windows 上,它返回Win32NT.

我没有 macOS 可供我使用(还没有:))所以我不知道它在 macOS 上实际返回的内容。

UnixEDIT1:这种方法在and Linuxor Windows32b 和 Windows64b之间似乎没有什么不同。

还有哪些其他方法可以检测 powershell 5.1 中的操作系统?

4

1 回答 1

1

问题是Powershell 5.1。

详细在这里:https ://devblogs.microsoft.com/scripting/powertip-determine-your-version-of-powershell-and-host-operating-system/

更多详细信息:从 Powershell 确定操作系统版本、Linux 和 Windows

Powershell 5.1 没有能力也无法确定 Microsoft 环境之外的操作系统。您可以做的最好的事情是使用 get-wmi 或 cim-sesssion

 windows 
 !windows

对于PowerShell Core(Powershell 版本 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 来结束你所要求的根本不可能/可能不值得付出努力。

于 2020-11-18T20:47:25.590 回答