我在C#中有一个PSCredential对象,并希望将其作为此PowerShell脚本的参数传递
这是PSCredential对象
PSCredential Credential = new PSCredential ( "bla" , blasecurestring)
Run Code Online (Sandbox Code Playgroud)
这是我想在C#中运行的脚本
powershell.AddScript("$s = New-PSSession -ComputerName '" + serverName + "' -Credential " + Credential);
Run Code Online (Sandbox Code Playgroud)
我无法理解这里提供的解决方案在C#中以编程方式在ScriptBlock中传递一个Parameter对象(PSCredential)
编辑:这件事正在发挥作用
powershell.AddCommand("New-PSSession").AddParameter("ComputerName", serverName).AddParameter("Credential", Credential);
Run Code Online (Sandbox Code Playgroud)
但是如何将会话信息保存在变量中呢?我需要它们用于以下命令:
powershell.AddScript(@"Invoke-Command -Session $s -ScriptBlock {" + cmdlet + "}");
Run Code Online (Sandbox Code Playgroud)
我现在找到了解决方案.当你知道你做了什么时,这很容易......
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");
Run Code Online (Sandbox Code Playgroud)
Credential是C#PSCredential对象