如果我在服务器或工作站上,如何从powershell中找到答案?

Omz*_*zig 4 powershell powershell-2.0

本文档解释了如何获取Windows版本,但在PowerShell中找到它更难.

[System.Environment]::OSVersion 有很多好的信息但不是服务器工作站标志......

bri*_*ist 13

$osInfo = Get-CimInstance -ClassName Win32_OperatingSystem
$osInfo.ProductType
Run Code Online (Sandbox Code Playgroud)

请参阅https://msdn.microsoft.com/en-us/library/aa394239%28v=vs.85%29.aspx

ProductType
Data type: uint32
Access type: Read-only
Additional system information.
Work Station (1)
Domain Controller (2)
Server (3)
Run Code Online (Sandbox Code Playgroud)

因此,如果值是1,那么您在工作站操作系统上.

如果是2你在域控制器上.

如果它3是在不是域控制器的服务器上.


如果您使用的是旧版本的Windows/PowerShell并希望能够在所有这些版本中运行,那么它们是相同的,但是Get-WmiObject:

$osInfo = Get-WmiObject -Class Win32_OperatingSystem
$osInfo.ProductType
Run Code Online (Sandbox Code Playgroud)

  • @ DavidC.Rankin WMI在Windows中回归*很长时间.一个名为OMI的开源版本也可用于其他平台,例如linux,但CIM是一个开放标准,因此微软建议CIM cmdlet继续使用,但WMI仍然存在,并且在Windows内部将继续存在.PowerShell从最新发布的版本6开始,是开源和跨平台的,您可以在Linux上安装它.您可以从*nix针对Windows运行CIM cmdlet,甚至是旧版本.尝试一下会很有趣. (2认同)
  • @ DavidC.Rankin CIM cmdlet [在PowerShell v3中引入](https://blogs.technet.microsoft.com/heyscriptingguy/2016/02/10/using-the-powershell-cim-cmdlets-for-fun-and -profit /),[也适用于Windows 7](https://blogs.technet.microsoft.com/heyscriptingguy/2013/06/02/weekend-scripter-install-powershell-3-0-on-windows -7 /).CIM cmdlet通过WinRM进行网络通信,与COM/RPC(WMI cmdlet正在使用)相比,它具有许多优点. (2认同)

Kor*_*ill 6

(Get-ComputerInfo).OsProductType
Run Code Online (Sandbox Code Playgroud)

在我的机器上,这会返回WorkStationServer

  • 请注意,在 PowerShell v5.1 之前,`Get-ComputerInfo` 不可用。 (2认同)
  • 虽然这很方便,但它有两个警告(除了要求 PSv5.1+ 之外): (a) 执行需要几秒的时间,甚至只询问感兴趣的属性(`Get-ComputerInfo -Property OsProductType`)也不会不要加快速度。(b) 执行期间总是显示进度条。 (2认同)