使用適用于 Windows IoT 的 PowerShell

注意

使用Import-PSCoreRelease (importps) 新增開放原始碼 powershell版本。 您仍然需要IOT_POWERSHELL功能,才能包含 WinRM 二進位檔

使用 Windows PowerShell,從遠端設定及管理任何Windows 10 IoT 核心版裝置。 PowerShell 是以工作為基礎的命令列殼層和指令碼語言,專為系統管理而設計。

請務必遵循下列步驟來正確設定執行Windows 10 IoT 核心版的裝置,以使用 Visual Studio 2017。

起始 PowerShell 會話

  1. 若要啟動與Windows 10 IoT 核心版裝置搭配運作的 PowerShell 會話,您必須先建立主機電腦與裝置之間的信任關係。 啟動 Windows IoT 核心版裝置之後,將會在附加至裝置的畫面上顯示 IP 位址。

    Windows 10 IoT 核心版上的 DefaultApp

    您可以在Windows 10 IoT 核心版儀表板中找到相同的資訊。

  2. 在本機電腦上開啟系統管理員 PowerShell 主控台。 在靠近 [Windows 開始] 功能表的[搜尋 Web 和 Windows] 方塊中輸入powershell。 Windows 會在您的電腦上找到 PowerShell。

    尋找 PowerShell

  3. 若要以系統管理員身分啟動 PowerShell,請以滑鼠右鍵按一下Windows PowerShell,然後選取 [以系統管理員身分執行]。

    以系統管理員身分執行 PowerShell

    現在您應該會看到 PowerShell 主控台。

    PS 主控台

  4. 您可能需要在桌面上啟動 WinRM 服務,才能啟用遠端連線。 若要這樣做,請從 PowerShell 主控台輸入下列命令:

        net start WinRM
    
  5. 從 PowerShell 主控台輸入下列內容, <machine-name or IP address> 使用 電腦名稱稱 取代適當的值 (是最簡單的值,但如果您的裝置不是在您的網路上唯一命名,請嘗試 IP 位址) :

          Set-Item WSMan:\localhost\Client\TrustedHosts -Value <machine-name or IP Address>
    
  6. 輸入 Y 以確認變更。

        Set-Item WSMan:\localhost\Client\TrustedHosts -Value "<machine1-name or IP Address>,<machine2-name or IP Address>"
    

    注意

    如果您想要連接多個裝置,您可以使用逗號和引號來分隔每個裝置。

  7. 現在,您可以啟動與 Windows IoT 核心版裝置的會話。 從系統管理員 PowerShell 主控台輸入:

         Enter-PSSession -ComputerName <machine-name or IP Address> -Credential <machine-name or IP Address or localhost>\Administrator
    
  8. 在 [認證] 對話方塊中,輸入下列預設密碼: p@ssw0rd

注意

連線程式不是立即的,最多可能需要 30 秒的時間。

如果您已成功連線到裝置,您應該會在提示之前看到裝置的 IP 位址。

PowerShell 主控台

  1. 更新您的帳戶密碼。 強烈建議您更新系統管理員帳戶的預設密碼。 若要這樣做,請在 PowerShell 連線中發出下列命令:

    a. 將 取代 [new password] 為強式密碼:

    net user Administrator [new password]
    

    b. 接下來,使用 Exit-PSSessionEnter-PSSession 搭配新的認證來建立新的 PowerShell 會話。

    Exit-PSSession
    
    Enter-PSSession -ComputerName <machine-name or IP Address> -Credential <machine-name or IP Address or localhost>\Administrator
    

常用的 PowerShell 命令

使用 Visual Studio 遠端偵錯工具 進行疑難排解

若要能夠從 Visual Studio 2017 部署應用程式,您必須確定Visual Studio 遠端偵錯工具是在 Windows IoT 核心版裝置上執行。 當您啟動電腦時,遠端偵錯程式應該會自動開啟。 若要重複檢查,請使用 tlist 命令從 PowerShell 列出所有執行中的進程。 在裝置上執行msvsmon.exe應該有兩個實例。

在長時間閒置後,Visual Studio 遠端偵錯工具可能會逾時。 如果 Visual Studio 無法連線到您的 Windows IoT 核心版裝置,請嘗試重新開機裝置。

設定您的 Windows IoT 核心版裝置

如果您想要,您可以重新命名您的裝置。

  1. 若要變更電腦名稱稱,請使用 setcomputername 公用程式:

    setcomputername <new-name>
    
  2. 重新開機裝置,讓變更生效。 您可以使用 shutdown 命令,如下所示:

    shutdown /r /t 0
    
  3. 因為電腦名稱稱已變更,所以重新開機之後,您必須重新執行此命令,才能使用新的名稱連線到您的裝置:

        Set-Item WSMan:\localhost\Client\TrustedHosts -Value <new-name>

您的 Windows IoT 核心版裝置現在應該已正確設定並可供使用!

常用的公用程式

如需您可以搭配 PowerShell 使用的命令和公用程式清單,請參閱 命令列 Utils 頁面。

已知問題和因應措施

問題:PowerShell 安全性原則中的已知 Bug 會導致遠端會話內出現下列問題:

  • Get-Help傳回非預期的相符專案。
  • 在指定的模組上Get-Command會傳回空的命令清單。
  • 從任何模組執行 Cmdlet 會擲回 CommandNotFoundException:Appx、NetAdapter、NetSecurity、NetTCPIP、PnpDevice。
  • 上述任何模組上的Import-Module會擲回具有 UnauthorizedAccess 的 PSSecurityException 例外狀況。 模組自動載入似乎無法運作。

因應措施:將遠端 PowerShell 會話內的執行原則修改為 RemoteSigned。 如需不同執行原則的詳細資訊,請參閱 使用 Set-ExecutionPolicy Cmdlet

問題:某些模組中的 Cmdlet,例如 NetAdapter 有時看不到。 例如,Get-Module NetAdapter 會傳回空的清單。

因應措施:搭配 Import-Module 使用 -Force 參數。 例如: Import-Module NetAdapter -Force

問題:將執行原則設定為 「AllSigned」 會中斷 PowerShell 遠端處理。 後續嘗試建立遠端會話失敗,並載入 Typesv3.ps1xml 的 SecurityException。

因應措施:使用winrs.exe還原 PowerShell 的執行原則:

  • 變更控制台字碼頁 Chcp 65001
  • 登入遠端cmd.exe殼層 Winrs.exe -r:<target> -u:<username> -p:<password> cmd.exe
  • 在遠端cmd.exe內,修改適當的登錄機碼 reg add HKLM\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /d RemoteSigned /f
  • 結束遠端cmd.exe會話 exit

其他已知問題

  • 在 PowerShell 腳本中,PowerShell 類別或列舉的屬性無法運作。 在擲回下列例外狀況中新增屬性化的結果: 類型必須是執行時間 Type 物件

  • 不支援輸出 CIM 和 PowerShell 遠端處理。 信賴憑證 Cmdlet 中的相關功能將無法運作。 其中包括 Enter-PSSession、Get-Job、Receive-Job、Import-Module、Invoke-Command 和 Copy-Item。

  • 除非使用 CredSSP 驗證建立會話,否則 SecureString 命令ConvertFrom-SecureString和ConvertTo-SecureString無法運作。 否則,必須指定 -Key 參數。 如需設定 CredSSP 驗證的詳細資訊,請參閱 使用 CredSSP 啟用 PowerShell「第二躍點」功能