#PSTip Get a list of geographical locations
Note: This tip requires PowerShell 3.0 or above.
In a previous tip I wrote about the International module. One of the commands of the module, Get-WinHomeLocation, returns a GeoID object which represents the home location (Country and Region) of the current user account.
PS> Get-WinHomeLocation
GeoId HomeLocation
----- ------------
244 United States
We can use the Set-WinHomeLocation to change the location but it requires us to have the GeoID numeric value in advance:
Set-WinHomeLocation -GeoId <int32>
Unfortunately, none of the International module commands gets you a list of countries and their GeoId value. Luckily, there’s a .NET class, RegionaInfo, you can use to get the GeoId of a specific culture. The following function creates a list of RegionalInfo objects for all InstalledWin32Cultures cultures on the current system. Run it without any parameters and you’ll get the complete list, or supply a (partial) value.
function Get-RegionInfo($Name='*')
{
$cultures = [System.Globalization.CultureInfo]::GetCultures('InstalledWin32Cultures')
foreach($culture in $cultures)
{
try{
$region = [System.Globalization.RegionInfo]$culture.Name
if($region.DisplayName -like $Name)
{
$region
}
}
catch {}
}
}
PS> Get-RegionInfo -Name *isr*
Name : he-IL
EnglishName : Israel
DisplayName : Israel
NativeName : ישראל
TwoLetterISORegionName : IL
ThreeLetterISORegionName : ISR
ThreeLetterWindowsRegionName : ISR
IsMetric : True
GeoId : 117
CurrencyEnglishName : Israeli New Shekel
CurrencyNativeName : שקל חדש
CurrencySymbol : ₪
ISOCurrencySymbol : ILS
PS> Get-RegionInfo | Sort-Object DisplayName | Select-Object Name,DisplayName,GeoId | Out-GridView
Share on: