若要建立 PowerShell 外掛程式和 Windows PowerShell 之間的連線,您必須設定 WinRM 使用其中一個支援的通訊協定。

PowerShell 外掛程式支援以 Windows 遠端管理 (WinRM) 2.0 做為管理通訊協定。

支援下列驗證方法。
驗證方法 詳細資料
基本 不安全的驗證機制,需要使用者名稱和密碼。
Kerberos 安全的驗證通訊協定,是採用票證才能驗證用戶端和伺服器的身分。
備註: PowerShell 外掛程式不支援在 WinRM 中委派使用者認證,而 CredSSP 並非支援的驗證方法。

WinRM 透過 HTTP 進行通訊

PowerShell 外掛程式支援透過 HTTP 通訊協定與 WinRM 主機通訊。儘管 WinRM 會驗證通訊,但資料傳輸並未經過加密,且會以純文字形式在網路上傳送。如果彼此通訊的電腦之間是設為使用 IPSec,則您應使用 HTTP 通訊協定。

若要使用基本驗證,您必須將服務和用戶端 WinRM 組態中的 AllowUnencrypted 內容設為 True。如需 HTTP 組態範例,請參閱設定 WinRM 以使用 HTTP

WinRM 透過 HTTPS 進行通訊

PowerShell 外掛程式支援透過 HTTPS 通訊協定與 WinRM 主機通訊。您可以使用 HTTPS 通訊協定,這是較安全的通訊方法。

若要使用 HTTPS 通訊協定,您必須產生伺服器驗證憑證,並在 WinRM 主機上安裝該憑證。如需 HTTPS 組態範例,請參閱設定 WinRM 以使用 HTTPS

設定 WinRM 以使用 HTTP

您可以將 WinRM 主機設定為透過 HTTP 通訊協定與 PowerShell 外掛程式進行通訊。

您必須在 WinRM 主機電腦上執行命令,藉此修改 WinRM 組態。您可以使用與 WinRM 服務和 WinRM 用戶端相同的電腦。

重要: 如果您在設定 WinRM 使用 HTTP 的過程中略過任何步驟,則主機可能無法新增,記錄中也可能會收到錯誤訊息,例如:
Caused by: org.dom4j.DocumentException: Error on line -1 of document : Premature end of file. 
Nested exception: Premature end of file.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.dom4j.DocumentHelper.parseText(DocumentHelper.java:278)
at com.xebialabs.overthere.cifs.winrm.connector.JdkHttpConnector.sendMessage(JdkHttpConnector.java:117)

程序

  1. 執行以下命令,設定預設的 WinRM 組態值。
    c:\> winrm quickconfig
  2. (選擇性) 執行以下命令,檢查接聽程式是否正在執行,並且驗證預設連接埠。
    c:\> winrm e winrm/config/listener

    HTTP 的預設連接埠是 5985,HTTPS 的則是 5986。

  3. 對 WinRM 服務啟用基本驗證。
    1. 執行以下命令,檢查是否已允許基本驗證。
      c:\> winrm get winrm/config/service
    2. 執行以下命令啟用基本驗證。
      c:\> winrm set winrm/config/service/auth @{Basic="true"}
  4. 執行以下命令以允許在 WinRM 服務中傳輸未加密資料。
    c:\> winrm set winrm/config/service @{AllowUnencrypted="true"}
  5. 如果 WinRM 服務的通道繫結 Token 強化層級設定為 strict(嚴格),請將其值變更為 relaxed(放鬆)。
    c:\> winrm set winrm/config/service/auth @{CbtHardeningLevel="relaxed"}
  6. 對 WinRM 用戶端啟用基本驗證。
    1. 執行以下命令,檢查是否已允許基本驗證。
      c:\> winrm get winrm/config/client
    2. 執行以下命令啟用基本驗證。
      c:\> winrm set winrm/config/client/auth @{Basic="true"}
  7. 執行以下命令,允許在 WinRM 用戶端傳輸未加密資料。
    c:\> winrm set winrm/config/client @{AllowUnencrypted="true"}
  8. 如果 WinRM 主機電腦位於外部網域,請執行以下命令以指定信任的主機。
    c:\> winrm set winrm/config/client @{TrustedHosts="host1, host2, host3"}
  9. 執行以下命令以測試與 WinRM 服務的連線。
    c:\> winrm identify -r:http://winrm_server:5985 -auth:basic -u:user_name -p:password -encoding:utf-8

設定 WinRM 以使用 HTTPS

您可以將 WinRM 主機設定為透過 HTTPS 通訊協定與 PowerShell 外掛程式進行通訊。

WinRM 主機需要憑證才能透過 HTTPS 通訊協定進行通訊。您可以取得或產生憑證。例如,您可以使用屬於 .NET Framework SDK 一部分的憑證建立工具 (makecert.exe) 產生自我簽署憑證。

必要條件

  • 設定 WinRM 以使用 HTTP 通訊協定。如需詳細資訊,請參閱設定 WinRM 以使用 HTTP
  • 確認您是否可存取 WinRM 主機上的 Microsoft Management Console (mmc.exe)。

程序

  1. 產生自我簽署憑證。
    以下命令列含有如何藉由使用 makecert.exe 在 WinRM 主機上建立憑證的範例語法。

    makecert.exe -r -pe -n "CN=host_name-3,O=organization_name" -e mm/dd/yyyy -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 certificate_name.cer

  2. 使用 Microsoft Management Console 新增產生的憑證。
    1. 執行 mmc.exe
    2. 選取檔案 > 新增/移除嵌入式管理單元
    3. 從可用的嵌入式管理單元清單中,選取憑證,然後按一下新增
    4. 選取電腦帳戶,然後按下一步
    5. 按一下完成
    6. 確認憑證是否已安裝於主控台根目錄 > 憑證 (本機電腦) > 個人 > 憑證主控台根目錄 > 憑證 (本機電腦) > 受信任的根憑證授權單位 > 憑證
      如果受信任的根憑證授權單位和個人資料夾中未安裝憑證,則您必須手動安裝。
  3. 使用正確的指紋和主機名稱建立 HTTPS 接聽程式。
    以下命令列含有如何建立 HTTPS 接聽程式的範例語法。

    winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="host_name";CertificateThumbprint="certificate_thumbprint"}

    備註: 略過憑證指紋中的空格。
  4. 測試連線。
    以下命令列含有如何測試連線的範例語法。

    winrs -r:https://host_name:port_number -u:user_name -p:password hostname