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