将 Win32_OperatingSystem 的国家代码转换为国家字符串

Convert CountryCode of Win32_OperatingSystem to the country string

我们正在尝试将 CountryCode 转换为人类可读的 String

代码:

$OS = Get-CimInstance -ClassName Win32_OperatingSystem

$OS | Select-Object CountryCode, OSLanguage, 
    @{N = 'OSDefaultLanguage'; E = {New-Object System.Globalization.CultureInfo([Int]$_.OSLanguage)}},
    @{N = 'OSCountryCode'; E = {New-Object System.Globalization.CultureInfo([Int]$_.CountryCode)}}

在上面的示例中,属性 OSCountryCode 是我们需要的。但它 return 的值 arArgentina 但它应该 return United States 根据 documentation 的值 1 .

如何将值 1 正确转换为 US 或类似的值?

$OS = Get-CimInstance -ClassName Win32_OperatingSystem

$Culture = [System.Globalization.CultureInfo]::GetCultures("SpecificCultures") | Where {$_.LCID -eq $OS.OSLanguage}
$RegionInfo = New-Object System.Globalization.RegionInfo $Culture.Name

$OS | Select-Object CountryCode, OSLanguage, 
    @{N = 'OSDefaultLanguage'; E = {New-Object System.Globalization.CultureInfo([Int]$_.OSLanguage)}},
    @{N = 'OSCountryCode'; E = {$RegionInfo.TwoLetterISORegionName}},
    @{N = 'OSCountryName'; E = {$RegionInfo.DisplayName}}