利用 PowerShell 變更 Windows 8 的當前位置

本文將介紹如何利用 PowerShell 變更 Windows 8 的當前位置。

情境描述

預設 Windows 8 市集中應用程式只會顯示您偏好語言的 App,您可以依照 MVP 小歐所寫的這篇 KB 來讓您的 Windows 8 市集可以看到其他語言或地區的 App,做法是將 Windows 市集中的【只顯示使用您偏好語言的應用程式】設定為【】,以及變更【控制台\時鐘、語言和區域\地區\變更位置】當前位置,才能顯示特定地區的 App,所以當您想下載美國地區的 App 就必須手動到控制台中變更位置,下載完之後可能又得改回來,下次要下載中國地區的 App 就必須再重複一次相同的動作。有沒有其他更偷懶的方法可以一鍵變更當前位置,下載 App 之後又一鍵恢復為您所慣用的位置呢?筆者想到利用強大的 PowerShell 可能可以達到這個需求,該怎麼做?請見實作步驟一節。

實作步驟

開啟 PowerShell 命令列或編輯視窗有下列幾種方法:

1. 利用【Win + R 】快速鍵開啟【執行】視窗,輸入 cmd 再按確定,於命令提示字元輸入【powershell】進入PowerShell 命令提示字元模式(如下圖)。

SNAGHTML127c87c6

2. 利用【Win + C】快速鍵開啟 Charms Bar,然後點選【搜尋】於文字方塊中輸入【powershell】,於搜尋結果中可以看到 Windows PowerShell、Windows PowerShell ISE,若您的 Windows 8 是 64 位元,那您會跟下圖的畫面一樣,看到 x86 的Windows PowerShell 及 Windows PowerShell ISE。

image

開啟 Windows PowerShell 及 Windows PowerShell ISE 的畫面分別如下:

SNAGHTML128b7752

SNAGHTML128c6d63

於 PowerShell 命令提示字元中輸入【Get-WinHomeLocation】然後按 Enter 來查詢當前位置(執行結果如下),筆者比較建議使用 Windows PowerShell ISE 來執行 PowerShell 命令,因為這個工具提供像是 IntelliSense 等多種方便的功能,以下示範就都以 PowerShell ISE 為例。

SNAGHTML1294a5d1

您可以利用【Set-WinHomeLocation】來設定當前位置,其語法如下:

Parameter Set: Default
Set-WinHomeLocation [-GeoId] <Int32> [ <CommonParameters>]

您必須在設定當前位置時提供 GeoId(Geographical location identifier),有關各個地區的 GeoId 可以參考 Table of Geographical Locations,以下筆者列出幾個常用的地區供您參考:

Geographical location identifier(GeoId) Location(位置)
0xF4 United States(美國)
0xC Australia(澳大利亞)
0x27 Canada(加拿大)
0x2D China(中國)
0x68 Hong Kong S.A.R. (香港)
0xF2 United Kingdom(英國)
0x7A Japan(日本)
0xED Taiwan(台灣)

以下指令碼示範將當前區域變更為美國:

 Set-WinHomeLocation 0xF4

SNAGHTML12aa6ecb

以下指令碼示範將當前區域變更為中國:

Set-WinHomeLocation 0x2D

SNAGHTML12ab2369[4]

以下指令碼示範將當前區域變更為台灣:

Set-WinHomeLocation 0xED

SNAGHTML12ac4c7c

要如何做到一鍵變更當前位置,您可以把上述變更位置的 PowerShell  指令碼儲存在副檔名為 ps1 的指令碼檔案檔案,下圖筆者將變更地區為中國、美國及台灣所需的指令碼事先輸入在名稱分別為 ChangeChinaLocation.ps1、ChangeUSLocation.ps1 及 ChaingeTaiwanLocation.ps1 的檔案中。

image

您可以在 ps1 檔案上按滑鼠右鍵選擇【用 PowerShell 執行】來執行您所輸入的指令碼達到變更當前位置的目的。

image

若要再更方便,您可以建立一個命令檔(*.cmd)來執行上述上述變更位置的 PowerShell  指令碼檔(*.ps1)。

下列命令檔用來執行變更當前區域為中國的 PowerShell 指令碼,筆者將之儲存為 ChangeChinaLocation.cmd:

powershell C:\Users\Terry\Desktop\ChangeChinaLocation.ps1

下列命令檔用來執行變更當前區域為美國的 PowerShell 指令碼,筆者將之儲存為 ChangeUSLocation.cmd:

powershell C:\Users\Terry\Desktop\ChangeUSLocation.ps1

下列命令檔用來執行變更當前區域為台灣的 PowerShell 指令碼,筆者將之儲存為 ChangeTaiwanLocation.cmd:

powershell C:\Users\Terry\Desktop\ChangeTaiwanLocation.ps1

當您執行命令檔嘗試變更當前區域時,可能遇到如下圖的錯誤訊息,這是因為基於安全性考量,作業系統預設停止指令碼執行。

SNAGHTML12d12148

所以您可以利用下列指令碼來設定目前使用者執行指令碼的權限,為簡化示範筆者暫時將執行權限設定為 RemoteSigned,實務上建議您只開放需要執行指令碼的範圍就好,避免執行權限開放過大造成安全性問題,詳細資訊可參考 about_Execution_Policies

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

設定完權限後您再執行上述的命令檔,即可順利將當前區域變更為中國,執行結果如下:

SNAGHTML12dcfe2f

參考資料

- 簡單二步驟讓 Windows 8 市集中的應用程式變更多(一點通系列 - MVP 撰寫)

- How to Configure International Settings

- Get-WinHomeLocation

- Set-WinHomeLocation

- Table of Geographical Locations

- Windows 8 Hot Keys

- about_Execution_Policies