HPCコマンドレットをプログラムで実行して、リモートコンピューター上のHPCインストールクレデンシャルを変更しようとしています。コマンドレットをローカルで実行する場合、それは非常に簡単です。
Runspace rs = GetPowerShellRunspace();
rs.Open();
Pipeline pipeline = rs.CreatePipeline();
PSCredential credential = new PSCredential(domainAccount, newPassword);
Command cmd = new Command("Set-HpcClusterProperty");
cmd.Parameters.Add("InstallCredential", credential);
pipeline.Commands.Add(cmd);
Collection<PSObject> ret = pipeline.Invoke();
ただし、リモートPowerShellで同じことを実行したい場合は、Invoke-Commandを実行し、コマンド内のScriptBlockに資格情報を渡す必要があります。どうやってやるの?文字列ではなく、ScriptBlock内のInstallCredentialパラメーターにバインドされたオブジェクトとしてクレデンシャルを渡す必要があることを除いて、次のようになります。
Pipeline pipeline = rs.CreatePipeline();
PSCredential credential = new PSCredential(domainAccount, newPassword);
pipeline.Commands.AddScript(string.Format(
CultureInfo.InvariantCulture,
"Invoke-Command -ComputerName {0} -ScriptBlock {{ Set-HpcClusterProperty -InstallCredential {1} }}",
nodeName,
credential));
Collection<PSObject> ret = pipeline.Invoke();