PowerShellでリモートマシンに接続する
PowerShellでリモート管理できないか探していたらリモートマシンに接続する方法があったので試してみました。
今回勢いで実機でテストしてしまったのは内緒です。
構成は下記のような感じ。
- サーバー(接続される側):ThinkPadX200 Windows 8.1 Pro Update 1
- クライアント(接続する側):ThinkPadT420 Windows 7 Enterprise SP1
以下設定メモ
サーバー側の設定
接続される側のThinkPadX200を設定します。
PowewrShellを管理者権限で起動してWinRMを構成します。
PS > Enable-PSRemoting
WinRM クイック構成 Windows リモート管理 (WinRM) サービスを使用して、このコンピューターのリモート管理を有効にするコマンド "Set-WSManQuickConfig" を実行します。 これには、次の処理が含まれます: 1. WinRM サービスを開始または (既に開始されている場合は) 再起動します。 2. WinRM サービスのスタートアップの種類を [自動] に設定します。 3. どの IP アドレスでも要求を受け付けるリスナーを作成します。 4. WS-Management トラフィック用の Windows ファイアウォールの受信規則の例外を有効にします (HTTP のみ)。 続行しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"):y WinRM は要求を受信するように更新されました。 WinRM サービスの種類を正しく変更できました。 WinRM サービスが開始されました。 WinRM はリモート管理用に更新されました。 このコンピューター上のあらゆる IP への WS-Man 要求を受け付けるため、HTTP://* 上に WinRM リスナーを 作成しました。 WinRM ファイアウォールの例外を有効にしました。 ローカル ユーザーにリモートで管理権限を付与するよう LocalAccountTokenFilterPolicy を構成しました。 確認 この操作を実行しますか? 対象 "名前: microsoft.powershell SDDL: O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)。選択したユーザーがこのコン ピューターに対して Windows PowerShell コマンドをリモートで実行できるようにします。" に対して操作 "Set-PSSessionConfiguration" を実行しています。 [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"):y 確認 この操作を実行しますか? 対象 "名前: microsoft.powershell.workflow SDDL: O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)。選択したユーザーがこのコン ピューターに対して Windows PowerShell コマンドをリモートで実行できるようにします。" に対して操作 "Set-PSSessionConfiguration" を実行しています。 [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"):y
ここまでやるとプロンプトに帰ってきます。
これで構成はできたので、まずは自分自身に接続してみました。
PS > Enter-PSSession -ComputerName localhost [localhost]: PS C:\Users\zoar\Documents>
プロンプトの最初に接続しているホスト名が「[localhost]」のような形で表示されていればOK。
Exitで抜けられます。
クライアント側の設定
今度は接続する側のThinkPadT420を設定します。
クライアント側でも同様にWinRMを設定しました。
こちらも管理者権限でプロンプトを立ち上げる必要があります。
PS > Enable-PSRemoting
(中略)
次にサーバーを信頼できるホストとして登録します。今回は「-Value *」として全てのホストを信頼させました、おすすめはしません。
PS > Set-Item WSMan:\localhost\Client\TrustedHosts -Value *
WinRM セキュリティの構成。 このコマンドは WinRM クライアントの TrustedHosts の一覧を変更します。TrustedHosts の一覧内にあるコンピューターは認証されない可能性があります。クライアントはこれらのコンピューターに 資格情報を送信する可能性があります。この一覧を変更しますか? [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"):y
ここからは管理者権限ではないプロンプトでOKです。
クライアントからサーバーに接続していみます。
PS > Enter-PSSession -ComputerName %サーバーホスト名% -Credential %ユーザー情報%
ユーザー情報には接続先の「ホスト名\ユーザー名」を入力します、必要に応じてHostsファイルを書き替えてください。
今回で言えば下記のような感じになります。
PS > Enter-PSSession -ComputerName ThinkPadX200 -Credential ThinkPadX200\zoar
Enterすると資格情報の入力ダイアログが表示されるのでパスワードを入力します。
やや間があって下記のようなプロンプトが返ってくれば接続OKです。
[thinkpadx200]: PS C:\Users\zoar\Documents>
sshのようにリモートマシンの管理も捗りそうです。