PowerShellには、別のコンピュータに接続してリモート操作を可能にする便利なコマンドがいくつかあります。その中でもよく使われるのが「Enter-PSSession」コマンドです。
このコマンドを使うと、まるで直接そのPCを操作しているかのように、リモートでコマンドを実行できます。IT管理者やシステム運用担当者にとっては、効率的な管理を実現するための必須スキルです。この記事では、「Enter-PSSession」の基本的な使い方から、利用するための前提条件、応用的な使い方、トラブルシューティングまでを詳しく解説します。
Enter-PSSessionとは?
「Enter-PSSession」は、PowerShell Remoting(リモート機能)を使って、リモートマシンと対話的なセッションを開始するためのコマンドです。
このコマンドは一度に一台のコンピューターと接続し、リモート先で直接コマンドを実行するための対話的なセッションを開きます。
基本構文は以下の通りです:
Enter-PSSession -ComputerName <リモートコンピューター名> -Credential <ユーザー資格情報>
このコマンドを実行すると、プロンプトがリモートセッション用に切り替わり、入力したコマンドはリモートコンピュータで実行されます。
使用する前の準備:WinRMの有効化と信頼関係
「Enter-PSSession」を使うためには、事前にいくつかの設定が必要です。特に重要なのが WinRM(Windows Remote Management) の有効化です。
WinRMの有効化(ローカル)
以下のコマンドを管理者権限で実行して、WinRMを有効にします。
Enable-PSRemoting -Force
信頼されたホストの追加(オプション)
ドメインに参加していない環境では、信頼されたホストの設定が必要です。
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "<対象ホスト名またはIP>"
複数ある場合はカンマで区切るか、*
を使ってすべてのホストを信頼することもできます。ただし、セキュリティの観点から推奨はされません。
実践:Enter-PSSessionの使い方
1. 基本的な接続方法
Enter-PSSession -ComputerName "192.168.1.100" -Credential (Get-Credential)
このコマンドでは、指定したIPアドレスのコンピューターに接続し、資格情報を入力して認証します。
2. ホスト名で接続する
Enter-PSSession -ComputerName "RemotePC01" -Credential (Get-Credential)
ホスト名での接続には、DNSが正しく設定されている必要があります。
3. セッションを終了する
接続を終了するには、以下のコマンドを入力します:
Exit-PSSession
セキュリティと接続のトラブル対策
リモートセッションを行う場合、接続がうまくいかないこともあります。その原因と対策を紹介します。
よくあるエラーと対処法
エラー1:WinRMサービスが起動していない
対処: 以下のコマンドでサービスを開始します。
Start-Service WinRM
エラー2:ファイアウォールが接続をブロックしている
対処: WinRM用のポート(TCP 5985)を許可します。
New-NetFirewallRule -Name "WinRM" -DisplayName "Allow WinRM" -Enabled True -Profile Any -Action Allow -Direction Inbound -Protocol TCP -LocalPort 5985
エラー3:信頼されていないホスト
対処: TrustedHostsに追加します(前述のSet-Item
コマンド参照)。
Enter-PSSessionと他のリモートコマンドの違い
PowerShellでは、他にも以下のようなリモートコマンドがあります。
コマンド | 特徴 |
---|---|
Enter-PSSession | 対話的なセッション。1台のPCに対して使用。 |
Invoke-Command | スクリプトやコマンドを一括で複数台に実行可能。 |
New-PSSession | セッションを作成して再利用可能にする。 |
たとえば、複数台に一括で処理をしたい場合は Invoke-Command
、セッションを使い回したい場合は New-PSSession
が便利です。
それに対して Enter-PSSession
は、直接コマンドを入力しながら操作するのに最適です。
HTTPSを使った安全な接続
デフォルトではHTTP(5985番ポート)が使われますが、セキュリティ強化のためにHTTPS(5986番ポート)を利用することも可能です。
そのためには、SSL証明書のインストールとWinRMの再構成が必要になります。
winrm quickconfig -transport:https
この設定を行うことで、リモート接続の暗号化が可能になり、セキュリティを大きく向上できます。
実務での活用例に問題を解決できるメリットがあります。
まとめ
「Enter-PSSession」は、PowerShellリモート機能の中でもシンプルで使いやすく、1対1の接続において非常に便利なツールです。
ただし、利用には事前の設定やセキュリティの配慮が必要不可欠です。WinRMの有効化やファイアウォールの設定、認証情報の取り扱いなどをしっかり理解した上で、安全かつ効率的にリモートセッションを活用しましょう。
今後、PowerShellスクリプトとの連携や複数マシンとの同時接続に進んでいく場合は、「Invoke-Command」や「New-PSSession」との違いも意識すると、より幅広い運用が可能になります。