非英语系统上的 Windows 版本

非英语系统上的 Windows 版本

我正在尝试编写一个 PowerShell 脚本,根据 Windows 版本(专业版、企业版、家庭版等)过滤操作。我可以使用Get-WmiObject Win32_OperatingSystem | Select-Object Caption,但根据MS 的文档,即“字符串可以本地化”。

我没有非英语的 Windows 系统可供检查。有人能确认与包含“Enterprise”或“Home”的标题字符串进行比较是否足以跨其他语言安装吗?

如果是本地化的话,版本一般如何确定?

谢谢。

答案1

基于这个帖子问题在于找到一个可靠的来源。我能找到的最好的资料是本开发者文档它并不像第一个链接中的答案所建议的那样完整。

尽管如此,以下代码将返回 Microsoft 当前运行的 Windows 版本的“官方”英文名称:

$page = Invoke-WebRequest -uri 'https://msdn.microsoft.com/en-us/library/ms724358.aspx'

$TableText = ($page.AllElements | 
        Where-Object {$_.tagname -eq 'tbody' -and $_.innertext -like 'valuemeaning*'} |
        Select-Object -ExpandProperty innertext) -split "`r`n"

$CSV = $TableText | Where-Object {$_ -match '^0x0.*'} | 
        ForEach-Object {$_ -replace "^(0x0[0-9A-F]+) ",'$1,'} |
        ForEach-Object {"$([convert]::ToInt16($_.split(',')[0],16))" + ',' + $_.split(',')[-1]}

$Editions = ConvertFrom-Csv $CSV -Header 'SKU','Name'

$ThisOS = (Get-WmiObject Win32_OperatingSystem).operatingsystemsku

$Editions | Where-Object {$_.SKU -eq $ThisOS} |Select-Object -ExpandProperty Name

希望这对某些人有帮助。如果有人找到更好的 SKU 查找在线资源,我可以修改代码。

相关内容