Как передать объект PSCredential из кода C# в функцию Powershell

у меня есть объект PSCredential в C# и я хочу передать его в качестве параметра для этого сценария PowerShell

это объект PSCredential

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

скрипт, который я хочу запустить в C#

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

Я не могу понять решение, которое предлагается здесь передать объект параметра (PSCredential) внутри ScriptBlock программно в C#

изменить: Эта штука работает

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

но как я могу спасти информация о сеансе в переменной? Мне они нужны для следующих команд:

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

1 ответов


теперь я нашел решение. Это так легко, когда знаешь, что делаешь...

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");

где учетные данные-объект C# PSCredential