忍者ブログ

denchi-pc

Windows PCをリモートシャットダウンする方法やエラー時の対処方法

Windows PCをリモートシャットダウンしたり、リモート再起動したい!

Windows 10などの一般向けWindows OSや、Windows ServerがインストールされたPC・サーバー機をリモートシャットダウンしたり、リモート再起動※したいときがあります。

※あるPCから別のPCをシャットダウン、再起動すること。

処理が完了したので、節電のためにPCをシャットダウンしたい。

あるいはWindows Updateの更新適用のために再起動したい、などのケースが考えられます。

そこで今回は、Windowsのリモートシャットダウン・リモート再起動の方法をご紹介します!

またコマンドによるリモートシャットダウンやリモート再起動操作を実行時、エラーが起きて正常にシャットダウンや再起動が開始されないケースをよく見かけます。

その対処方法についても併せてご紹介していますので、エラーが起きて困っている方も、参考になさってください!

Windowsのリモートシャットダウン・リモート再起動の方法

Windows OSが搭載されたPCをリモートシャットダウンしたり、リモート再起動する方法はいくつか存在します。

今回はその中から二つの方法をご紹介しましょう。

リモートデスクトップで接続して、シャットダウン・再起動操作をする方法

リモートシャットダウン・再起動の対象PCに対して、リモートデスクトップ接続が可能な場合は、この方法が最も簡単でしょう。

対象のPCにリモートデスクトップ接続を行い、リモートデスクトップの画面上でシャットダウンや再起動操作を実行するだけですから。

リモートデスクトップの画面上でリモートデスクトップホスト※をシャットダウン・再起動する方法は、ホストOSのバージョンにより、利用可能な方法が異なります。

ただ『Alt』+『F4』キー操作を使った方法であれば、多くのバージョンのWindowsで利用可能なため、この方法が特におすすめできます。

※リモートデスクトップの接続先コンピューターのこと。

この方法では、リモートデスクトップホストのデスクトップにフォーカスがあたっている状態で『Alt』+『F4』キー操作を実行。

すると以下のようなWindowsのシャットダウンや再起動の確認・選択画面が表示されます。

Windowsのシャットダウンや再起動の確認・選択画面で選択可能な操作を表示している様子

上記画面中の選択リストから『シャットダウン』や『再起動』を選び、『OK』ボタンをクリックすることで、リモートデスクトップホストのシャットダウンや再起動が実行されます。

リモートデスクトップで接続してシャットダウン・再起動を行うその他の操作方法については、以下でくわしく解説しているので、興味がある方は併せてご覧になってください。

リモートデスクトップ先のWindowsをシャットダウンしたり再起動する方法

PowerShellのコマンドレットを使ってリモートシャットダウンやリモート再起動を行う方法

以前、Windowsのシャットダウン タイマーを設定(一定時間後に停止)する方法などでご紹介した、PowerShellのStop-ComputerやRestart-Computerコマンドレットを使うことで、リモートシャットダウンやリモート再起動が可能です。

Stop-ComputerやRestart-Computerでは、シャットダウンや再起動の対象コンピューターを指定するComputerNameというパラメーターを持っています。

これに対象のコンピューターを指定してStop-ComputerやRestart-Computerを実行すれば、リモートシャットダウンや再起動が実行されます。

たとえばコンピューター名がdc1、IPアドレスが192.168.100.50のコンピューターをリモートシャットダウン・再起動する場合には、以下のようなコマンドレットを実行します。

#コンピューター名を指定してリモートシャットダウンする場合

Stop-Computer -Force -ComputerName "dc1"

#IPアドレスを指定してリモートシャットダウンする場合

Stop-Computer -Force -ComputerName "192.168.100.50"

#コンピューター名を指定してリモート再起動する場合

Restart-Computer -Force -ComputerName "dc1"

#IPアドレスを指定してリモート再起動する場合

Restart-Computer -Force -ComputerName "192.168.100.50"

1

2

3

4

5

6

7

8

9

#コンピューター名を指定してリモートシャットダウンする場合

Stop-Computer -Force -ComputerName "dc1"

#IPアドレスを指定してリモートシャットダウンする場合

Stop-Computer -Force -ComputerName "192.168.100.50"

#コンピューター名を指定してリモート再起動する場合

Restart-Computer -Force -ComputerName "dc1"

#IPアドレスを指定してリモート再起動する場合

Restart-Computer -Force -ComputerName "192.168.100.50"

尚、この方法では資格情報(ユーザーアカウント名やパスワード)を指定していません。

そのため対象PCのシャットダウン権限を持つユーザー アカウントと、同一ユーザー名・パスワードのアカウントを使ってログインした別のPCから、コマンドを実行する必要があります。

またコンピューター名を指定する場合は、DNSサーバーなどにより名前解決できなければなりません。

資格情報を併用してリモートシャットダウン・再起動する方法

現在ログインしているユーザーと異なる、別ユーザーの資格情報を使ってリモートシャットダウン・再起動する場合は、Credentialパラメーターに資格情報を指定してください。

Credentialパラメーターに資格情報を提示する方法は、対話的に提示する方法とコマンド内に資格情報を埋め込む方法が利用可能です。

対話的に提示する方法では、以下のようにコマンドを実行します。

#シャットダウンする場合

Stop-Computer -Force -ComputerName "192.168.100.50" -Credential (Get-Credential)

#再起動する場合

Restart-Computer -Force -ComputerName "192.168.100.50" -Credential (Get-Credential)

1

2

3

4

#シャットダウンする場合

Stop-Computer -Force -ComputerName "192.168.100.50" -Credential (Get-Credential)

#再起動する場合

Restart-Computer -Force -ComputerName "192.168.100.50" -Credential (Get-Credential)

上記コマンドを実行すると資格情報入力画面が表示されるので、ユーザー名とパスワードを入力してから『OK』ボタンをクリックしてください。

PowerShellのGet-Credentialコマンドレッドを実行し、Windows PowerShell 資格情報の要求画面が表示されている様子

資格情報をコマンド内に埋め込む場合は、PSCredentialやConvertTo-SecureStringを使用します。(下記例ではユーザー名をtest、パスワードをpasswordと指定。)

#シャットダウンする場合

Stop-Computer -Force -ComputerName "192.168.100.50" -Credential (New-Object System.Management.Automation.PSCredential("test", (ConvertTo-SecureString –String "password" –AsPlainText -Force)))

#再起動する場合

Restart-Computer -Force -ComputerName "192.168.100.50" -Credential (New-Object System.Management.Automation.PSCredential("test", (ConvertTo-SecureString –String "password" –AsPlainText -Force)))

1

2

3

4

#シャットダウンする場合

Stop-Computer -Force -ComputerName "192.168.100.50" -Credential (New-Object System.Management.Automation.PSCredential("test", (ConvertTo-SecureString –String "password" –AsPlainText -Force)))

#再起動する場合

Restart-Computer -Force -ComputerName "192.168.100.50" -Credential (New-Object System.Management.Automation.PSCredential("test", (ConvertTo-SecureString –String "password" –AsPlainText -Force)))

コマンド操作によるWindowsのリモートシャットダウン・リモート再起動実行時のエラーの対処方法

冒頭にも書きましたが、コマンドによるリモートシャットダウン・リモート再起動操作を実行時、エラーが起きて正常にシャットダウンや再起動が開始されないことがあります。

発生するエラーの中でも、特によく見かけるエラーなのが通信関係のエラーと権限関係のエラー。

そして前者では『RPC サーバーを利用できません。』、後者では『アクセスが拒否されました。』というエラーメッセージが表示されることが多いです。

『RPC サーバーを利用できません。』エラーの対処方法

『RPC サーバーを利用できません。』というエラーメッセージが表示される場合、何らかの理由でシャットダウン対象のPCと通信ができていない可能性があります。

本エラーメッセージが表示される場合は、以下について確認を行い、正常にシャットダウン対象のPCと通信ができるようにしてください。

シャットダウン対象のPCとコマンドを実行するPCについて、ネットワーク設定(IPアドレスやサブネットマスク、デフォルトゲートウェイの設定など)の不備はないか。

※名前解決ができない場合には、『コンピューター名 XXXXXXXX を解決できません。』というエラーが表示されることがあります。

ネットワーク経路に問題(OSPFなどルーティング関係に問題)はないか。

対象のPCが起動しているか。

※対象のPCが起動していないケースでも、本エラーが表示されます。

ファイアウォールがリモートシャットダウンの通信を遮断していないか。

シャットダウン対象のPCが起動しており、pingにも応答を返すなど、正常に通信ができていそう…。

にも関わらず、本エラーメッセージが表示されるケースでは、Windows Defender ファイアウォール(Windows標準のファイアウォール)、またはアンチウイルスソフトウェア製品のファイアウォールが、リモートシャットダウンの通信を遮断している可能性があります。

ファイアウォールが原因かどうかの切り分けは簡単で、一時的にファイアウォールを無効化。

この状態でリモートシャットダウンを試し、正常に動作するようになったり、エラーメッセージが変わった場合には、ファイアウォールが通信を遮断している可能性が高いです。

過去の経験上、『RPC サーバーを利用できません。』というエラーメッセージが表示されてリモートシャットダウンができないケースでは、このファイアウォールによる通信遮断が原因であることが非常に多いです。

Windowsのリモートシャットダウンは、RPC(Remote Procedure Call)という仕組みを利用しています。

これはリモート コンピューター上に実装された機能を呼び出すための仕組みであり、この通信がファイアーウォールに遮断されることで、リモートシャットダウンが失敗するのです。

そのためファイアウォールを無効化することで通信が遮断されなくなり、リモートシャットダウンが正常に動作するようになる、というわけ。

ただセキュリティーを考慮すると、ファイアウォールの無効化は推奨できません。

したがってリモートシャットダウンが使用する通信だけを遮断しないように、例外設定(受信を許可)すると良いでしょう。

尚、ファイアウォールが通信を遮断している場合は、Windows ファイアウォールのログ取得の設定方法やリアルタイム閲覧についての手順を参考に、『破棄されたパケットをログに記録する』を『はい』に設定すれば、パケットを破棄したときのログが記録されるようになります。

RPCが使用するポートについて

RPCが使用するポートは、Windows OSのバージョンによって異なります。

これについてはマイクロソフトさんが分かりやすくまとめてくれているので、以下に引用します。

– ファイアウォールで許可しなければならないポート番号

RPC サーバー アプリケーションは、起動時に自身がリッスンするポート番号をエンドポイントマッパーに登録します。

RPC サーバー アプリケーションが使用するポート番号は、Windows Server 2003 / Windows XP の既定では 1024 番~ 5000 番、Windows Server 2008 / Windows Vista の既定では 49152 番 ~ 65535 番です。

このため、RPC サーバーの下記のポート番号宛ての通信が、経路上のファイアウォール、コンピューター上のパーソナル ファイアウォールなどで許可されている必要があります。

135/tcp (RPC エンドポイント マッパー / 全 OS バージョン共通)

1024-5000/tcp,udp (RPC 動的ポート / Windows Server 2003, Windows XP の場合)

49152-65535/tcp,udp (RPC 動的ポート / Windows Server 2008, Windows Vista の場合)

(Microsoft TechNet – RPC サーバーを利用できません?より引用)

これらのポートをシャットダウン対象のPCで許可するようにファイアウォールを構成すれば、RPCの通信は正常に行えるようになるはずです。

参考までに、Windows 10のWindows Defender ファイアウォールの受信規則GUIで設定する場合は、『135/tcp』と『RPC 動的ポート』を許可設定としてください。(Windows 10 Pro 1709で動作を確認。)

『アクセスが拒否されました。』エラーの対処方法

『アクセスが拒否されました。』というエラーメッセージが表示されるケースでは、シャットダウン対象のPCに対してシャットダウンする権限を持っていない権限で、リモートシャットダウンを行おうとしている可能性があります。

本エラーメッセージは、たとえば以下のような場合に表示されます。

シャットダウン権限を持つ対象PCのローカル ユーザー アカウントとは、異なるユーザー名・パスワードの別アカウントを使ってログインしたPCから、リモートシャットダウンを実行しており、かつ資格情報を提示していない。

または資格情報を提示したが、認証できなかった(ユーザー名・パスワードのどちらか、または両方が間違っている)、認証できたがシャットダウン可能な権限を持っていなかった。

UACのリモート制限※が有効である。

※リモートUACとも呼ばれています。

本エラーメッセージが表示され、何度試してもダメな場合には、資格情報(ユーザー名・パスワード)の入力間違いが原因であることは少なく、UACのリモート制限が有効であることが原因の場合が多いです。

これが原因であれば、レジストリエディターを起動して以下設定を行うことで、リモートシャットダウンや再起動ができるようになります。

キー名:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

値の名前:LocalAccountTokenFilterPolicy

値の種類:REG_DWORD / DWORD(32ビット)

値のデータ:1

あるいは管理者権限で起動したコマンドプロンプトで、以下のコマンドを実行します。

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1

1

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1

本設定により、UACのリモート制限が無効化されます。

※Windows 10 Pro 1709では、レジストリの変更後再起動せずに、UACのリモート制限の有効・無効切り替えができることを確認しています。

UACのリモート制限の仕様・動作は、ローカル ユーザー アカウントとドメイン ユーザー アカウント (Active Directoryのユーザー アカウント)でそれぞれ異なります。

これについての詳細は、マイクロソフトさんのユーザー アカウント制御、Windows Vista でリモートの制限の説明でくわしく解説されているので、併せて参考にすると良いでしょう。

というわけで、コマンド操作によるリモートシャットダウンや再起動がうまく動作しない場合は、ファイアーウォールやUACのリモート制限についても確認してみてくださーい!

PR

コメント

プロフィール

HN:
angel
性別:
非公開

カテゴリー

P R