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のようにリモートマシンの管理も捗りそうです。