我正在使用 Windows Server 2016 nano 的最新预览版。
使用远程 powershell 会话,我通过 连接到远程系统Enter-PSSession
,然后我尝试使用最常用的技术来检查 Windows 版本,因为完整的 .Net 框架不可用。此外,Get-WmiObject cmdlet 不可用。
我可以看到一些信息的唯一方法是使用这个非 powershell 命令 DISM:
Dism /Online /Get-Feature
这给了我这个输出以及已安装功能的列表:
Deployment Image Servicing and Management tool
Version: 10.0.10514.0
Image Version: 10.0.10514.0
Features listing for package : Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~10.0.10514.0
从高于我的 Windows 10 桌面的 10514 值中,我可以对内核构建有所了解,有趣的是,Windows 10 桌面具有相同的“Microsoft-Windows-Foundation-Package”,但内核构建编号较低。
是否有人找到可以编写的 cmdlet 或某些 powershell 函数或别名,它们可以以某种不太可能中断的方式帮我检测我的 powershell 脚本是否正在 nano 服务器上运行,或者任何可以实际打印出“Windows Server 2016 Nano Server”的命令?
更新:这更接近我想要的,但有点黑客攻击:
Get-Item -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion'
更新 2:Get-WmiObject 不存在,尽管以下操作有效,但它仅报告内核版本:
[System.Environment]::OSVersion.Version
上面将报告版本 10514,而 Windows 10 客户端操作系统 RTM 目前报告 10240,但上面实际上是一个“内核构建”,而不是操作系统产品/版本/服务包级别。
答案1
您可以尝试以下操作,我没有 nano 服务器可以尝试。select
如果它为您提供了其他内容,请将其删除,然后查看您想要的内容是否存储在 Server 2016 Nano 中的其他属性下
Get-CIMInstance -ClassName Win32_OperatingSystem -Property * | select caption
在真实的 Nano 实例上测试时,不需要 -session 参数,但如果您将来需要它,可以使用 -session 的变体:
$cuser = "Your username"
$cservername = "Your Servername"
$csession = New-CimSession –Credential $cuser –ComputerName $cservername
Get-CIMInstance –session $csession -ClassName Win32_OperatingSystem -Property * | select caption
答案2
这只是您编辑的扩展,但通过仅获取 ProductName 来清理输出
$(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' ProductName).ProductName
答案3
Microsoft 方式(也称为 Cert 方式)是使用Get-WindowsEdition -Online
有关该命令及其所有选项的更多信息,请访问这里!
答案4
PowerShell 管理命令提示符并输入:
Get-WmiObject -Class Win32_Operatingsystem
返回:
Build Number and Version