2015/06/04

PowerShell Enable-PSRemotingを実行するとSet-WSManQuickConfig でエラーになる場合の対処法

PowerShell を使う理由の一つに「リモート アクセス」があります。
この機能は非常に魅力的で、複数台のクライアントPCに対し同時に何らかの処理を行う事が出来ます。
リモート先のクライアントPCでEnable-PSRemotingコマンドレットを実行したところ、エラーが表示されました。
今回は、Enable-PSRemotingを実行するとSet-WSManQuickConfig でエラーになる場合の対処法をメモ。

エラー内容

Set-WSManQuickConfig : このコンピューターのネットワーク接続の種類の 1 つが Public に設定されているため、WinRM ファイアウォール例外は機
能しません。 ネットワーク接続の種類を Domain または Private に変更して、やり直してください。


発生場所 行:116 文字:17
+ Set-WSManQuickConfig -force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Set-WSManQuickConfig]、InvalidOperationException
+ FullyQualifiedErrorId : WsManError,Microsoft.WSMan.Management.SetWSManQuickConfigCommand

原因と対処法

原因は、(エラー内容に書かれている通り)クライアントPCのネットワーク カテゴリーが「パブリック」になっているためでした。

対処法はPowerShell を使用し、ネットワーク カテゴリーをパブリックからプライベートに変更するだけです。※環境によっては、ドメインに変更となります。
以前の記事に変更方法を説明してます。
PowerShell ネットワークのカテゴリを変更する~PublicからPrivateへ
ここで分かった事は、Enable-PSRemoting コマンドレットを実行しWinRMを有効にするためには、ネットワーク カテゴリーが
  • プライベート、又は
  • ドメイン
でなければ有効にならない事。
Enable-PSRemoting のヘルプを見ると
On server versions of Windows, Enable-PSRemoting creates firewall rules for private and domain networks that allow remote access, and creates a firewall rule for public networks that allows remote access only from computers in the same local subnet.

On client versions of Windows, Enable-PSRemoting in Windows PowerShell 3.0 creates firewall rules for private and domain networks that allow unrestricted remote access. To create a firewall rule for public networks that allows remote access from the same local subnet, use the SkipNetworkProfileCheck parameter.
と書かれており、どうしてもPublic ネットワークで実行する場合は-SkipNetworkProfileCheck パラメーターを付けて実行すればいいようです。
とはいえども、実行しているネットワークはしっかり管理しているのでネットワーク カテゴリーはPublicではなくPrivate又はDomainであるべき!だと考えています。
テスト環境はWindows Server 2012 R2 Essentialsを使っており、ほとんどのクライアントPCがドメインに参加しています。
Workgroupで設定する事があまりないので気が付きませんでした。
忘れやすい点なので、今後のためにも覚えておきます。
スポンサーリンク

スポンサーリンク