Question
『Powershellを呼び出し』アクティビティを使用してリモートサーバー上でPowerShellを実行することは可能ですか?
Answer
『Powershellを呼び出し』アクティビティを使用してリモートサーバー上でPowerShellを実行することは可能です。
『Powershellを呼び出し』アクティビティの中でInvoke-Commandを実行することでリモートサーバー上でPowerShellを実行し、その結果を受け取ることができます。
一例として、リモートサーバー上のサービス一覧を取得する場合、呼び出すPowerShellスクリプトは以下のようになります。
-ScriptBlock { } の中にリモートサーバー上で実行するコマンドを記述します。
Invoke-Commandのオプションに -Credentialオプションを追加して認証情報を渡すことで、実行時にパスワードを求められることなく実行できます。
param (
[string]$RemoteComputerName,
[string]$UserName,
[string]$PasswordText
)
$Password = ConvertTo-SecureString -String $PasswordText -AsPlainText -Force
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName, $Password
$objects = Invoke-Command -ComputerName $RemoteComputerName -ScriptBlock {
Get-Service
} -Credential $credential
$output = $objects | ForEach-Object { "$_`n"}
Write-output $output
サンプルのPowerShellスクリプトとワークフローはこちらです。
PSRemoteExample_Legacy.zip (3.4 KB)
尚、事前準備としてリモート実行する側とされる側に設定が必要となります。
既にリモートコマンドの操作をされている場合は不要です。
リモート実行をする側(UiPathご利用の端末):
・管理者権限でWinRMを実行
コマンド例: PS> net start WinRM
・管理者権限でTrustedHosts に実行対象端末のIPアドレスを追加
コマンド例: PS> Set-Item WSMan:\localhost\Client\TrustedHosts -Value “実行対象端末のIPアドレス”
リモート実行される側:
・ネットワーク接続の種類をPrivateまたはDomainに設定(Publicになっている場合、Enable-PSRemotingの実行でエラーとなります)
設定箇所:Windowの設定 > ネットワークとインターネット > プロパティ > ネットワークプロファイル
・管理者権限で Enable-PSRemoting を実行
コマンド例: PS> Enable-PSRemoting