「サーバー運用」タグアーカイブ

PowerShellでリモートサーバーを操作!Enter-PSSessionとInvoke-Commandの使い方

リモートサーバーをPowerShellで操作したいけど、何を使えばいいの?
そんな疑問に答えるのが、Enter-PSSessionInvoke-Command の2つです。

どちらもPowerShellのリモート管理コマンドですが、使いどころが異なります。

コマンド用途動作
Enter-PSSession1台のサーバーに対して対話的に操作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 requestWinRM無効Enable-PSRemoting -Force
Access is denied権限不足管理者権限or適切なアカウント
Kerberos 認証エラーWorkgroup環境TrustedHosts設定 or HTTPS

TrustedHosts 例:


実務Tips:こんな時に便利

✅ 監視スクリプト
✅ バッチ反映の自動化
✅ 管理サーバーから20台へ一括処理
✅ 休日バッチメンテの効率化

PowerShellリモートは、定型作業の自動化サーバー負荷・ログ確認の省力化に非常に強力です。


まとめ

使い分け特徴
Enter-PSSession1台に接続して手動操作
Invoke-Command複数サーバーに対して一括命令

まずはEnter-PSSessionで慣れ、
次にInvoke-Commandで自動化へ進みましょう。