C# を使用して呼び出しコマンド コマンドレットを実行しようとしていますが、正しい構文がわかりません。この単純なコマンドを実行したいだけです:
invoke-command -ComputerName mycomp.mylab.com -ScriptBlock {"get-childitem C:\windows"}
C# コードでは、次のことを行いました。
InitialSessionState initial = InitialSessionState.CreateDefault();
Runspace runspace = RunspaceFactory.CreateRunspace(initial);
runspace.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = runspace;
ps.AddCommand("invoke-command");
ps.AddParameter("ComputerName", "mycomp.mylab.com");
ps.AddParameter("ScriptBlock", "get-childitem C:\\windows");
foreach (PSObject obj in ps.Invoke())
{
// Do Something
}
これを実行すると、例外が発生します。
Cannot bind parameter 'ScriptBlock'. Cannot convert the "get-childitem C:\windows" value of type "System.String" to type "System.Management.Automation.ScriptBlock".
ここで ScriptBlock タイプをどこかで使用する必要があると思いますが、方法がわかりません。これは開始するための単純な例にすぎません。実際の使用例では、複数のコマンドを含むより大きなスクリプト ブロックを実行する必要があるため、これを行う方法についてのヘルプをいただければ幸いです。
ありがとう