Windows Remote Management(WinRM)設定

Windows 環境においてAnsibleのようにリモートから対象サーバのコマンドやスクリプトを実行するためにWindows Remote Management(以下WinRM) を利用して実行する方法を記載します。
※ここではWindowsファイアウォールなどのネットワーク設定は割愛します。

準備(接続先サーバ)

Powershell(管理者として実行)から以下のコマンドを実行しサービスを有効化します。
詳細なオプションはこちらを参照

Enable-PSRemoting -Force

準備(接続元サーバ)

Powershell(管理者として実行)から以下のコマンドを実行し接続先ホストを許可します。ここでは *(アスタリスク) を指定しています。(どこでも接続可能)

Set-Item WSMan:\localhost\Client\TrustedHosts * -Force

接続方法

「Enter-PSSession」コマンドで接続できることを確認します。
資格情報を入力するダイアログが表示されますので、接続先のユーザー/パスワードを入力します。

$credential = Get-Credential
接続先資格情報を入力
Enter-PSSession -ComputerName <HOSTNAME> -Credential $cred

サンプルスクリプト

スクリプトでバックグラウンドで実行する場合は、資格情報をファイルに暗号化した状態で保管しておくと良いかと。
Powershellでのパスワードをセキュア ストリングファイルとして保存する方法はこちらを参照

#パスワードファイルを読み込み
$pass       = Get-Content <FILENAME> | ConvertTo-SecureString

#復号化
$credential = New-Object System.Management.Automation.PSCredential "<USERNAME>",$pass

#リモートホストの資格情報とコマンドを指定
Invoke-Command <HOSTNAME> -credential $credential -ScriptBlock { C:\tools\run.ps1 }

必要となる権限やポートについて

Administratorであればデフォルトのまま接続可能ですが、AdministratorやAdministratorsの権限を付与したくない場合、以下のグループへ参加することにより必要最小限の権限で接続できます。

またネットワークで接続する場合はポートは以下のとおりです。

HTTP: 5985/tcp
HTTPS:5986/tcp

https://support.microsoft.com/ja-jp/help/2019527/how-to-configure-winrm-for-https

参考

http://www.vwnet.jp/Windows/PowerShell/2018020501/ConnectRemotePS6.htm
https://yomon.hatenablog.com/entry/2015/03/30/133450

コメントは受け付けていません。

WordPress.com Blog.

ページ先頭へ ↑

%d人のブロガーが「いいね」をつけました。