システム管理者は、メンテナンス、更新、またはトラブルシューティングのために、Windows コンピュータをリモートで再起動する必要があることがよくあります。 PowerShell には、このタスクを実行するための効率的な方法がいくつか用意されています。この記事では、単純なコマンドレットからより高度なアプローチまで、PowerShell を使用して Windows コンピューターをリモートで再起動するための 6 つの効果的な手法について説明します。
リモート再起動の前提条件
リモート Windows コンピュータを再起動する前に、次のことを確認してください。
- リモート コンピュータ上でローカル管理者権限を持つユーザー アカウント。
- ローカル マシンにインストールされている PowerShell または PowerShell Core。
- Windows リモート管理 (WinRM) が構成され、リモート コンピューターのファイアウォールを通過することが許可されています。
- Windows Management Instrumentation (WMI) はリモート コンピューターのファイアウォールを通過できます。
再起動コマンドを続行する前に、リモート システムがまだ再起動を保留していないことを確認することも重要です。
方法 1: Restart-Computer コマンドレットを使用する
のRestart-Computerコマンドレットは、リモート Windows コンピューターを再起動するための最も簡単で柔軟な方法です。
ステップ 1:ローカル マシンで管理者として PowerShell を開きます。
ステップ 2:次のコマンドを使用して、単一のリモート コンピュータを再起動します。
Restart-Computer -ComputerName "RemotePC" -Force
「RemotePC」を、再起動するリモート コンピュータの実際の名前または IP アドレスに置き換えます。
ステップ 3:複数のコンピューターを並行して再起動するには、次のコマンドを使用できます。
$ComputerArray | ForEach-Object -Parallel {
Restart-Computer -ComputerName $_ -Force
} -ThrottleLimit 3
このコマンドは、PowerShell の並列処理機能を使用して、リソース使用量を制御するためにスロットル制限 3 で複数のコンピューターを同時に再起動します。
方法 2: Invoke-CimMethod を活用する
のInvoke-CimMethodコマンドレットは Windows Management Instrumentation (WMI) を使用してリモート システムを再起動します。
ステップ 1:管理者として PowerShell を開きます。
ステップ 2:次のコマンドを実行します。
Invoke-CimMethod -ComputerName "RemotePC" -ClassName 'Win32_OperatingSystem' -MethodName 'Reboot'
「RemotePC」をターゲット コンピューターの名前または IP アドレスに置き換えます。
この方法は、特定の WMI 構成を持つシステムを操作する場合、または再起動操作と並行して他の WMI 関連タスクを実行する必要がある場合に特に便利です。
方法 3: shutdown.exe コマンドを使用する
のshutdown.exeコマンドは、リモート コンピュータを再起動するために使用できる組み込みの Windows ユーティリティです。
ステップ 1:管理者として PowerShell を開きます。
ステップ 2:次のコマンドを実行します。
shutdown.exe /m \RemotePC /r /t 0
「RemotePC」を再起動するリモート コンピューターの名前に置き換えます。
この方法では、リモート コンピュータ上でリモート レジストリ サービスが有効になっており、WMI が Windows ファイアウォールを通過できるようにする必要があります。
方法 4: PSExec.exe を使用する
PSExec.exe は Sysinternals ツールキットの一部であり、リモート システムと対話するための独自の機能を提供します。
ステップ 1:Microsoft 公式 Web サイトから Sysinternals Suite をダウンロードしてインストールします。
ステップ 2:管理者として PowerShell を開き、PSExec.exe が含まれるディレクトリに移動します。
ステップ 3:次のコマンドを実行します。
.psexec.exe -d -h \RemotePC "shutdown.exe /r /t 0 /f"
「RemotePC」をターゲット コンピューターの名前に置き換えます。
この方法では、SMB サービスが実行中であること、ファイルとプリンターの共有が有効であること、単純なファイル共有が無効であること、およびリモート コンピューター上で admin$ 管理共有が使用可能であることが必要です。
方法 5: Invoke-Command 経由で RunDLL32.exe を使用する
この方法は以下を組み合わせますrundll32.exePowerShell を使用した場合Invoke-Commandリモート システムを再起動します。
ステップ 1:管理者として PowerShell を開きます。
ステップ 2:次のコマンドのいずれかを実行します。
方法 5a:
Invoke-Command -ComputerName "RemotePC" -ScriptBlock { & rundll32.exe user.exe,ExitWindowsExec }
方法 5b:
Invoke-Command -ComputerName "RemotePC" -ScriptBlock { & rundll32.exe shell32.dll,SHExitWindowsEx 2 }
「RemotePC」をリモート コンピューターの名前または IP アドレスに置き換えます。
これらの方法は、再起動プロセスと同時に追加のリモート操作を実行する必要がある場合に役立ちます。
方法 6: Taskkill.exe を使用して強制的に再起動する
この方法では、重要なシステム プロセスを終了して Windows を強制的に再起動します。
ステップ 1:管理者として PowerShell を開きます。
推奨読書:Windows PC をリモートでシャットダウンまたは再起動する方法
ステップ 2:次のコマンドを実行します。
taskkill.exe /S \RemotePC /IM lsass.exe /F
「RemotePC」をターゲット コンピューターの名前に置き換えます。
注意:この方法は重要な Windows プロセスを強制的に終了するため、最後の手段として使用する必要があります。慎重に使用しないと、データの損失やシステムの不安定が発生する可能性があります。
これら 6 つの方法は、PowerShell を使用して Windows コンピューターをリモートで再起動するためのさまざまなオプションをシステム管理者に提供します。特定の要件とネットワーク構成に最も適した方法を選択してください。これらのコマンドを運用環境で使用する前に、必ず制御された環境でテストしてください。











