オーケストレーションでのカスタム PowerShell アクティビティの仕組みIssue この記事には、カスタム PowerShell アクティビティの機能に関する有用な情報とサンプル スクリプト コマンドが含まれています。 コマンド/スクリプトの実行場所 カスタム PowerShell アクティビティのコマンド/スクリプトは、ターゲット ホスト上で実行されるのではなく、MID サーバーサービス アカウントのローカル MID サーバー上で実行される。 例 コマンド hostnameは、常に MID サーバーのホスト名を表示しますコマンド whoamiは、常に MID サーバーのサービスアカウントを表示します。 コマンド/スクリプトを実行する前に、MID サーバーは認証情報テスト方法を使用して、ターゲット ホストに対してアクティブな Windows 認証情報を 1 つずつテストします。デフォルトでは、テストメソッドは WMI クエリーであり、ターゲットホストで WMI クエリー権限を持つ認証情報を選択します。 リモート ターゲットがドメイン コントローラーである場合は、代わりにテスト メソッドを AD クエリに変更して、ターゲット ホストのポート 389 で AD クエリを実行できる資格情報を資格情報テストで選択し、ターゲット ホストに対して WMI クエリを実行する必要がないようにする方が理にかなっています。詳細については、以下の ヒント2 を確認してください。 テスト メソッドに成功した最初の Windows 資格情報は、 $cred 変数に格納されます。 コマンドで 認証情報$cred を明示的に使用する必要があります。それ以外の場合、コマンドは MID サーバーのサービスアカウントとして実行されます。 [ターゲットホスト] フィールドの値は、コマンド/スクリプトで使用できる PowerShell 変数 $computerに格納されます。 サンプルスクリプト 1 次のコマンドでは、 $computer は「ターゲットホスト」フィールドの値からのもので、 $cred は資格情報テストに成功した Windows 資格情報です。 gwmi win32_operatingsystem -computer $computer -credential $cred サンプルスクリプト 2 add-adgroupmember -identity "testgroup" -member "testuser" #this line is run using MID server service account, and likely causes error "Insufficient access rights to perform the operation" add-adgroupmember -identity "testgroup" -member "testuser" -credential $cred #this line is run using the windows credential that succeeds credential test ヒント 1 特定の状況では、認証情報テストメソッドを呼び出さずに認証情報を選択する必要があります。この場合は、ターゲットホストを 127.0.0.1 に設定してください ターゲットホストが 127.0.0.1 に設定されている場合、資格情報テストは実行されず、順序が最も小さい Windows 資格情報が使用されます。 これを認証情報のタグ付けと組み合わせて、必要な認証情報を選択できます。(認証情報は変数 $cred にも格納されます) (credential tag は Kingston から credential alias に名前が変更されました) ヒント 2 ターゲット ホストがドメイン コントローラーの場合は、PowerShell 変数を作成できます。 アクティビティデザイナー >実行コマンド > PowerShell 変数 名前を「credType」、値を「AD」として指定します。この方法では、資格情報テスト メソッドはターゲット ホストへの AD クエリになります。 その他の credType オプションについては、 MID サーバー PowerShell ファイルを確認してください。 リモートホストでのコマンド/スクリプトの実行 リモート サーバーでコマンドを実行する場合は、 PowerShell remote を使用する必要があります。たとえば、サーバー server01.lab01.com にバッチ スクリプト c:\temp\test.bat がある場合は、次のように実行できます。 ターゲットホスト フィールドを server01.lab01.com に更新します。[コマンド] に次を入力します。 $s = New-PSSession -ComputerName $computer -credential $credInvoke-Command -Session $s -ScriptBlock {c:\temp\test.bat} (上記のターゲットホストは IP ではなく FQDN であるため、この FQDN のcmdb_ci_dns_nameレコードを作成することをお勧めします)Related LinksMID サーバー:WMI/PowerShell の問題のトラブルシューティング - 認証情報Windows ディスカバリー:リモートマシンでの WMI/PowerShell の問題のトラブルシューティング