首页 > 解决方案 > 在 C3 powershell 中使用 ScriptBlock 和 WSManConnectionInfo

问题描述

我在使用带有 WSManConnectionInfo 的运行空间执行脚本块时遇到问题。

我的代码:

WSManConnectionInfo connectionInfo = new WSManConnectionInfo();
connectionInfo.ComputerName = vmHost;
connectionInfo.Credential = psCredential;
Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo);
runspace.Open();
using (var ps = PowerShell.Create())
{
   ps.Runspace = runspace;
   Command invokeCommand = new Command("Invoke-Command");
   invokeCommand.Parameters.Add("VMName", "TestVM");
   invokeCommand.Parameters.Add("Credential", guestCredential);
   ScriptBlock test = ScriptBlock.Create("Get-Process"); 
   invokeCommand.Parameters.Add("ScriptBlock", test);         
   ps.Commands.AddCommand(invokeCommand);

   output = ps.Invoke();
}

我收到以下错误:{“无法绑定参数'ScriptBlock'。无法将“System.String”类型的“Get-Process”值转换为“System.Management.Automation.ScriptBlock”类型。”}

如果我将运行空间更改为以下内容,它可以正常工作,但我需要使用 WSMANConnection 联系 HyperV 环境:

var initial = InitialSessionState.CreateDefault();
Runspace runspace = RunspaceFactory.CreateRunspace(initial);

有什么建议么?

标签: c#powershellrunspace

解决方案


推荐阅读