リモートサーバーをPowerShellで操作したいけど、何を使えばいいの?
そんな疑問に答えるのが、Enter-PSSession と Invoke-Command の2つです。
どちらもPowerShellのリモート管理コマンドですが、使いどころが異なります。
| コマンド | 用途 | 動作 | 
|---|---|---|
| Enter-PSSession | 1台のサーバーに対して対話的に操作 | SSHのように「接続してその場でコマンド実行」 | 
| Invoke-Command | 複数サーバーに対して一括実行可能 | コマンドを送って結果を受け取る | 
この記事では、初心者でも確実に理解できる具体例と、業務で使えるセキュアな設定方法まで解説します。
事前準備:WinRMが有効か確認
PowerShellリモートを使うには、WinRM(Windows Remote Management) が有効である必要があります。
WinRM状態確認
有効化(必要な場合)
1. Enter-PSSession:対話形式でリモート接続
接続コマンド
- 
server01→ 接続先ホスト名(IPでも可) - 
Get-Credential→ ユーザー名とパスワード入力画面を出す 
実行例
切断
用途例
単体サーバーの手動確認作業
ログ確認、サービス再起動テストなど
2. Invoke-Command:コマンドをリモート実行
単一サーバーへコマンド実行
複数サーバーへまとめて実行
実行結果を変数で受け取る
用途例
定期メンテ(サービス状態取得、ログ収集)
複数サーバーの一括設定変更
セキュアに使う:認証方法のポイント
資格情報を変数に保持
HTTPS通信を利用する場合
管理セキュリティポリシーが厳しい企業ネットワークではHTTPSリモート設定が推奨される場合もあります。
よくあるエラーと対処
| エラー | 原因 | 対処 | 
|---|---|---|
| WinRM cannot process the request | WinRM無効 | Enable-PSRemoting -Force | 
| Access is denied | 権限不足 | 管理者権限or適切なアカウント | 
| Kerberos 認証エラー | Workgroup環境 | TrustedHosts設定 or HTTPS | 
TrustedHosts 例:
実務Tips:こんな時に便利
✅ 監視スクリプト
✅ バッチ反映の自動化
✅ 管理サーバーから20台へ一括処理
✅ 休日バッチメンテの効率化
PowerShellリモートは、定型作業の自動化やサーバー負荷・ログ確認の省力化に非常に強力です。
まとめ
| 使い分け | 特徴 | 
|---|---|
| Enter-PSSession | 1台に接続して手動操作 | 
| Invoke-Command | 複数サーバーに対して一括命令 | 
まずはEnter-PSSessionで慣れ、
次にInvoke-Commandで自動化へ進みましょう。
