7

C#にPSCredentialオブジェクトがあり、このPowerShellスクリプトのパラメーターとして渡したい

これはPSCredentialオブジェクトです

    PSCredential Credential = new PSCredential ( "bla" , blasecurestring)

これは私がC#で実行したいスクリプトです

powershell.AddScript("$s = New-PSSession -ComputerName '" + serverName + "' -Credential " + Credential);

ここで提供されているソリューションを理解できませんでした。C#でプログラム的にScriptBlock内にパラメーターオブジェクト(PSCredential)を渡します。

編集:これは機能しています

powershell.AddCommand("New-PSSession").AddParameter("ComputerName", serverName).AddParameter("Credential", Credential);

しかし、どうすればセッション情報を変数に保存できますか?次のコマンドに必要です。

powershell.AddScript(@"Invoke-Command -Session $s -ScriptBlock {" + cmdlet + "}");
4

1 に答える 1

10

私は今解決策を見つけました。あなたが何をしているのかを知っているとき、それはとても簡単です...

powershell.AddCommand("Set-Variable");
powershell.AddParameter("Name", "cred");
powershell.AddParameter("Value", Credential);

powershell.AddScript(@"$s = New-PSSession -ComputerName '" + serverName + "' -Credential $cred");
powershell.AddScript(@"$a = Invoke-Command -Session $s -ScriptBlock {" + cmdlet + "}");
powershell.AddScript(@"Remove-PSSession -Session $s");
powershell.AddScript(@"echo $a");

ここで、CredentialはC#PSCredentialオブジェクトです。

于 2012-12-14T09:43:15.477 に答える