PowerShellを使用してWindowsコンピューターをリモートで再起動する方法

システム管理者は、特に頻繁にサーバーまたはシステムを再起動する必要があります。通常、グラフィカルユーザーインターフェイスを使用してWindowsをリモートでシャットダウンまたは再起動できます。PowerShellにはコンピューターをリモートで再起動するためのいくつかの方法があり、この記事では6つの既知の方法を概説します。

PowerShellを使用してWindows 11/10をリモートで再起動する方法

これらの方法の前提条件は、リモートシステムに接続して必要に応じて認証できるようにすることです。また、リモートシステムが再起動を保留していないことを確認する必要があります。

次のようなものが必要です。

  • ローカル管理者グループのリモートコンピューターのユーザーアカウント。
  • Windows PowerShellまたはPowerShell Core。

1] Restart-Computerを使用してリモートコンピューターを再起動する

このコマンドレットは、柔軟なパラメーターを使用して簡単に使用できます。コマンドが機能するための追加の前提条件は、WinRMが構成され、リモートコンピューターのWindowsファイアウォールを介して許可されており、WMIがWindowsファイアウォールを介して許可されていることを確認することです。

Restart-Computer -ComputerName $ComputerName -Force

複数のコンピューターを並行して再起動するには、次のコマンドを実行します。

$ComputerArray | ForEach-Object -Parallel {
Restart-Computer -ComputerName $_ -Force
} -ThrottleLimit 3

2] Invoke-CimMethodを使用してリモートコンピューターを再起動する

Invoke-CimMethodは、WIMメソッドを使用してリモートシステムを再起動しますが、Restart-Computerコマンドレットほど柔軟ではありません。

コマンドが機能するための追加の前提条件は、WinRMが構成され、リモートコンピューターのWindowsファイアウォールを介して許可されていることを確認することです。

Invoke-CimMethod -ComputerName $ComputerName -ClassName 'Win32_OperatingSystem' -MethodName 'Reboot'

3] shutdown.exeを使用してリモートコンピューターを再起動する

shutdown.exeは、Windowsがシステムを再起動するために提供する標準の組み込み実行可能ファイルであり、PowerShellコマンドではありませんが、堅牢な一連のオプションを提供します。

コマンドが機能するための追加の前提条件は、リモートコンピューターにリモートレジストリサービスが有効になっており、WMIがWindowsファイアウォールを介して許可されていることを確認することです。

shutdown.exe /m \\remotecomputer /r /t 0

4] PSExec.exeを使用してリモートコンピューターを再起動する

Sysinternalsツールキットの中で最も使用されているユーティリティの1つであるpsexec.exe は、リモートシステムとの対話を容易にするいくつかの独自の機能を提供します。

コマンドが機能するための追加の前提条件は、SMBサービスが実行されており、ファイルとプリンターの共有が有効になっており、簡易ファイル共有が無効になっており、admin$管理共有を使用できることを確認することです。

psexec.exe -d -h \\remotecomputer "shutdown.exe /r /t 0 /f"

5] RunDLL32.exeを使用してリモートコンピューターを再起動する

rundll32.exe は、shell32.dllなどの内部実行可能ファイルとWindows APIに対して特定のメソッドを実行する方法を提供します。この機能を使用してシステムを再起動できる方法は2つありますが、この方法はそれ自体では実際にリモートで使用することはできません。リモートシステムでInvoke-Command を介してPowerShellと組み合わせることができます。

方法1:

Invoke-Command -ComputerName $ComputerName -ScriptBlock { & rundll32.exe user.exe ExitWindowsExec }

方法2:

Invoke-Command -ComputerName $ComputerName -ScriptBlock { & rundll32.exe user.exe ExitWindowsExec }

6] Taskkill.exeを使用してリモートコンピューターを再起動する

最後になりましたが、taskkill.exe は、回りくどい方法ですが、Windowsを再起動するための機能を提供するもう1つのWindowsユーティリティです。lsass.exe プロセスを終了することにより、Windowsの再起動を強制します。

taskkill.exe /S \\remotecomputer /IM lsass.exe /F

リモートコンピューターを再起動するための6つの方法に関する説明は以上です!