技術情報

【PowerShell】リモート接続を行う方法(Enter-PSSession)

こんにちは、Windows インフラエンジニア ばにゃです。

Enter-PSSessionコマンドによるリモート接続

本記事では、PowerShellを使用して別コンピューターにリモート接続する方法について解説します。

単純に別コンピューターにリモート接続を行うだけであれば、リモートデスクトップ接続がもっとも簡単でわかりやすい方法です。

リモートデスクトップ接続
リモートデスクトッププロトコルを利用して他のコンピューターに接続を行い、ネットワーク越しに他のコンピューターの操作および画面転送を行う技術

しかし リモートデスクトップ接続が許可されていない環境なんらかの問題でリモートデスクトップ接続に失敗してしまう環境 で別コンピューターの設定値確認/変更を行いたい場合、今回解説する Enter-PSSessionコマンドによるリモート接続が役立ちます。

結論として、以下のようなコマンドを実行することでリモート接続が可能です。

Enter-PSSession -ComputerName <接続先コンピューターのホスト名 or IPアドレス> -Credential <接続に使用するアカウント>

Enter-PSSessionコマンドの詳細や、実行に失敗してしまう場合の対処方法について知りたい方は、以降に記載する内容も確認してください。

スポンサーリンク

前提となる環境

本記事では、以下のような環境を例として記載します。
この環境で私自身が実機動作確認済みの手順となります。

環境
  • Windows Server 2019
  • Windows Server 2016
  • Windows 10
    ※Windows OS 全般

リモート接続方法

Enter-PSSessionコマンドで別コンピューターにリモート接続を行う方法です。

Enter-PSSessionコマンドによるリモート接続

接続元コンピューターよりPowerShellを起動し以下のコマンドを実行します。

Enter-PSSession -ComputerName <接続先コンピューターのホスト名 or IPアドレス> -Credential <接続に使用するアカウント>

-ComputerName で指定する接続先は、IPアドレス/ホスト名/FQDN名、いずれでも問題ありません。

認証画面が開くので -Credential で指定したユーザーアカウントのパスワードを入力します。

Enter-PSSession 認証画面

以下のようなメッセージが表示されれば、Enter-PSSession でのリモート接続が完了です。

[接続先コンピューターのホスト名 or IPアドレス>]: PS C:\Users\<ユーザーアカウント名>\Documents>

リモート接続完了後に実行するコマンドは、接続先コンピューターで実行されることになります。

リモート接続を終了する場合は以下のコマンドを実行します。

exit

Enter-PSSessionが失敗する場合の対処方法

Enter-PSSessionコマンド実行時にエラーが表示されて失敗する場合、以下の内容を参考に対処してみてください。

Windows Remote Management (WS-Management) サービスの起動

Enter-PSSession エラー

Enter-PSSession : リモート サーバー xxx.xxx.xxx.xxx への接続に失敗し、次のエラー メッセージが返されました: WinRM は処理を完了できません。 指定したコンピューター名が有効であること、コンピューターにネットワーク経由でアクセスできること、およびWinRM サービスのファイアウォールの例外が有効になっていてこのコンピューターからアクセスできることを確認してください。既定では、パブリック プロファイルの WinRM ファイウォールの例外によって、同一のローカル サブネット内のリモート コンピューターへのアクセスは制限されます。詳細については、about_Remote_Troubleshooting のヘルプ トピックを参照してください。

Enter-PSSessionコマンド実行時に上記のようなメッセージが表示された場合、接続先コンピューターで以下のサービスが起動しているか確認します。

  • Windows Remote Management (WS-Management)
Windows Remote Management (WS-Management) サービス

サービスが起動していない場合、サービス起動後に再度Enter-PSSessionコマンドを実行します。

TrustedHosts構成設定の確認/追加

Enter-PSSession エラー

Enter-PSSession : リモート サーバー xxx.xxx.xxx.xxx への接続に失敗し、次のエラー メッセージが返されました: WinRM クライアントは要求を処理できません。認証スキームが Kerberos と異なる場合、またはクライアント コンピューターがドメインに参加していない場合は、 HTTPS トランスポートを使用するか、または宛先コンピューターが TrustedHosts 構成設定に追加されている必要があります。 TrustedHosts を構成するには winrm.cmd を使用します。TrustedHosts 一覧に含まれるコンピューターは認証されていない可能性があります。 winrm help config コマンドを実行すると、詳細が表示されます。詳細については、about_Remote_Troubleshooting のヘルプ トピックを参照してください。

Enter-PSSessionコマンド実行時に上記のようなメッセージが表示された場合、接続元コンピューターのTrustedHosts構成設定を確認/追加します。

まず接続元コンピューターで以下のサービスを起動します。

  • Windows Remote Management (WS-Management)
Windows Remote Management (WS-Management) サービス

PowerShellを起動し以下のコマンドを実行して現在の TrustedHosts構成設定 を確認します。

Get-Item WSMan:\localhost\Client\TrustedHosts

初期状態では以下のように Value に値がない状態が表示されます。

   WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Client

Type            Name                           SourceOfValue   Value
----            ----                           -------------   -----
System.String   TrustedHosts

以下のコマンドを実行して、TrustedHosts構成設定 に接続先コンピューターを追加します。

Set-Item WSMan:\localhost\Client\TrustedHosts -Value <接続先コンピューターのホスト名 or IPアドレス>

-Value で指定する接続先は、IPアドレス/ホスト名/FQDN名、いずれでも問題ありません。

以下のような表示がされるため、Y を入力してEnterを押下します。

WinRM セキュリティの構成。
このコマンドは WinRM クライアントの TrustedHosts の一覧を変更します。
TrustedHosts
の一覧内にあるコンピューターは認証されない可能性があります。
クライアントはこれらのコンピューターに資格情報を送信する可
能性があります。この一覧を変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): 

再度以下のコマンドを実行して、TrustedHosts構成設定 を確認します。

Get-Item WSMan:\localhost\Client\TrustedHosts

実行結果に、追加した接続先コンピューターの情報が表示されていれば問題ありません。

   WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Client

Type            Name                           SourceOfValue   Value
----            ----                           -------------   -----
System.String   TrustedHosts                                   xxx.xxx.xxx.xxx

上記手順完了後、再度 Enter-PSSession コマンドを実行します。

参考情報

Microsoft ドキュメント

Enter-PSSession コマンドについては、Microsoft の以下サイトも参考にしてください。

関連記事

関連書籍

PowerShell 6.0 まで対応している PowerShell 関連の書籍です。
現状で 6.0 まで対応している数少ない書籍のため、PowerShell の学習におすすめです。

にほんブログ村 IT技術ブログへ
にほんブログ村

コメント