PowerShellでリモートマシン(Windows10)を操作する方法

PowerShellでリモートマシン(Windows10)を操作する方法

Windows環境に標準搭載されているPowerShellのコマンドレットの中には、ローカルマシンを操作するだけでなく、リモートマシンを操作できるコマンドレットがあります。

複数のWindowsマシンを管理している場合、リモートマシンをコマンドラインで操作できれば日々の管理作業を効率化することもできます。

ドメイン環境であれば、比較的簡単にリモートマシンを操作できますが、ワークグループ環境では事前の設定がいくつか必要になります。

そこで、ここではワークグループ環境のWindows10マシンをPowerShellコマンドレットを利用してリモート操作する方法を紹介します。

動作環境

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェア バージョン
Windows10 Pro 64bit 1909

事前設定

リモートマシンをPowerShellで操作するには、事前に以下の設定を行っておく必要があります。

操作されるマシン(リモートマシン)

Memo

リモートでの操作を許可すると、セキュリティは低下することを理解の上、実行しましょう。

操作される側のマシンでは、管理者権限でPowerShellを起動して、以下のコマンドレットを順に実行します。

PS C:\> Set-ExecutionPolicy RemoteSigned
PS C:\> Set-WSManQuickConfig

PowerShellでリモートマシン(Windows10)を操作する方法

また「Windows Defender ファイアウォール」を利用している場合、一部のコマンドレットを実行するには、受信の規則を追加しておく必要があります。

受信の規則は、以下のコマンドで追加できます。

PS C:\> New-NetFirewallRule -DisplayName "@RPC-enable" -Program "%SystemRoot%\System32\svchost.exe" -Profile Private -Direction Inbound -Protocol TCP -LocalPort RPC -Action Allow

操作するマシン

操作する側のマシンでは、管理者権限でPowerShellを起動して、以下のコマンドレットを順に実行します。

PS C:\> Set-ExecutionPolicy RemoteSigned
PS C:\> winrm quickconfig
PS C:\> Set-Item WSMan:\localhost\Client\TrustedHosts *

PowerShellでリモートマシン(Windows10)を操作する方法

Memo

「winrm quickconfig」コマンド実行した時に「このコンピューターのネットワーク接続の種類の 1 つが Public に設定されているため、WinRM ファイ アウォール例外は機能しません。 ネットワーク接続の種類を Domain または Private に変更して、やり直してください。」と表示されることがあります。

この場合、リモートマシンへ接続するときに利用するネットワーク接続の種類が「パブリック」の場合は「プライベート」に変更の上コマンドを再実行します。

以上で、準備完了です。  

ここからは、リモートマシンを操作するいくつかのコマンドレットを紹介します。

Enter-PSSession

「Enter-PSSession」コマンドレットでは、指定したリモートマシンに対して対話型セッションを開始することができます。

コマンドレットは、次のように実行します。

PS C:\> Enter-PSSession <リモートマシン> -Credential <接続アカウント>

リモートマシンの指定方法は、IPアドレスでもコンピューター名でもOKです。

コマンドを実行すると、接続アカウントのパスワードを入力するダイアログが表示されるので、パスワードを入力するとリモート接続できます。

PowerShellでリモートマシン(Windows10)を操作する方法

たとえば、リモートマシン「PC-002」に「user01」で接続する場合は、次のようにコマンドを実行します。

PS C:\> Enter-PSSession pc-002 -Credential user01

リモートマシンに接続すると、プロンプトが「[接続先]: PS C:\Users\接続アカウント\Documents>」のように変わり、リモートマシン側のプロセスとしてPowerShellコマンドレットを実行できます。

PowerShellでリモートマシン(Windows10)を操作する方法

接続を切る時は「Exit-PSSession」あるいは「exit」と入力してエンターキーを押します。

PowerShellでリモートマシン(Windows10)を操作する方法

Invoke-Command

「Invoke-Command」コマンドレットでは、指定したリモートマシンで「ScriptBlock」で指定したコマンドレットやスクリプトを実行することができます。

コマンドレットは、次のように実行します。

PS C:\> Invoke-Command -ComputerName <リモートマシン> -Credential <接続アカウント> -ScriptBlock {コマンドレット}

コマンドを実行すると、接続アカウントのパスワードを入力するダイアログが表示されるので、パスワードを入力して「OK」をクリックすれば、指定したリモートマシンでコマンドを実行することができます。

PowerShellでリモートマシン(Windows10)を操作する方法

たとえば、リモートマシン「PC-002」に「user01」で接続して、コマンド「Get-Process | select -First 5」を実行する場合は、次のようにコマンドを実行します。

PS C:\> Invoke-Command -ComputerName pc-002 -Credential user01 -ScriptBlock {Get-Process | select -First 5}

コマンドの実行結果は、以下の画像のようになります。

PowerShellでリモートマシン(Windows10)を操作する方法

なお、リモートマシンに対して何回もコマンドを実行する場合、毎回資格情報を入力すのは面倒なので、あらかじめリモートマシンへの固定接続セッションを確立した上で、コマンドレットを実行することもできます。

その場合は、次の順にコマンドを実行します。

PS C:\> $session = New-PSSession -ComputerName <リモートマシン> -Credential <接続アカウント>
PS C:\> Invoke-Command $session -ScriptBlock {PowerShellコマンドレット}

PowerShellでリモートマシン(Windows10)を操作する方法

Restart-Computer / Stop-Computer

「Restart-Computer」コマンドレットでは、リモートマシンを再起動することができ、「Stop-Computer」コマンドレットでは、リモートマシンをシャットダウンすることができます。

リモートマシンを再起動するときは、次のように実行します。

PS C:\> Restart-Computer -ComputerName <リモートマシン> -Force -Credential <接続アカウント>

リモートマシンをシャットダウンするときは、次のように実行します。

PS C:\> Stop-Computer -ComputerName <リモートマシン> -Force -Credential <接続アカウント>

「-Force」オプションを指定することで、再起動/シャットダウンするときに、サインインしているユーザーを強制的にサインアウトさせることができます。

たとえば、リモートマシン「PC-002」に「user01」で接続して、再起動するには次のようにコマンドを実行します。

PS C:\> Restart-Computer -ComputerName pc-002 -Force -Credential user01

なお、リモートマシンはカンマ区切りで複数指定することもできます。

Test-Connection

「Test-Connection」コマンドレットでは、宛先に指定したマシンとの疎通を確認することができ、発信元マシンにリモートマシンを指定することができます。

コマンドレットは、次のように実行します。

PS C:\> Test-Connection -ComputerName <宛先マシン> -Source <発信元マシン> -Credential <接続アカウント>

たとえば、リモートマシン「PC-002」に「user01」で接続して、リモートマシンを発信元として、宛先「yahoo.co.jp」に疎通を確認する場合は、次のようにコマンドを実行します。

PS C:\> Test-Connection -ComputerName yahoo.co.jp -Source pc-002 -Credential user01

コマンドの実行結果は、以下の画像のようになります。

PowerShellでリモートマシン(Windows10)を操作する方法

Rename-Computer

「Rename-Computer」コマンドレットでは、コンピューター名を変更することができます。

コマンドレットは、次のように実行します。

PS C:\> Rename-Computer -NewName 新しいコンピュータ名 -ComputerName <リモートマシン> -LocalCredential <コンピューター名\ユーザー名> -Restart

なお「-Restart」オプションを指定すると、コンピューター名を変更した後に、リモートマシンを再起動します。

たとえば、リモートマシン「pc-002」のコンピューター名を「pc-003」に変更し、再起動するには、次のようにコマンドを実行します。

PS C:\> Rename-Computer -NewName pc-003 -ComputerName pc-002 -LocalCredential pc-002\user01 -Restart

あとがき

複数台のWindowsマシンを管理されている方は、リモートデスクトップなどのGUI操作だけでなく、PowerShellでリモートマシンを操作する方法も活用すれば、より効率的な管理ができます。

お試しあれ。

記事が役立ったらシェアしてくれるとうれしいです。

あなたにおすすめのコンテンツ
トップへ戻る