C# 在本地主机上创建运行空间而不提供runspaceconnectioninfo时,某些PowerShell模块(群集cmdlet)无法加载
请参考以下样本: RunspaceSample(string.Empty);由于术语“Add-VMToCluster”未被识别为cmdlet的名称而失败。 而RunspaceSample(“localhost”)或RunspaceSample(“somecomputerName”)成功了。任何指针,为什么?包含RunspaceConnectionInfo是否会更改用于执行的powershell版本或RunspaceConfiguration? 另外,如果使用RunSpaceConnectionInfo和ComputerName=“localhost”创建运行空间,即使在本地计算机上执行powershell脚本,也会对性能产生什么影响 谢谢C# 在本地主机上创建运行空间而不提供runspaceconnectioninfo时,某些PowerShell模块(群集cmdlet)无法加载,c#,powershell,runspace,C#,Powershell,Runspace,请参考以下样本: RunspaceSample(string.Empty);由于术语“Add-VMToCluster”未被识别为cmdlet的名称而失败。 而RunspaceSample(“localhost”)或RunspaceSample(“somecomputerName”)成功了。任何指针,为什么?包含RunspaceConnectionInfo是否会更改用于执行的powershell版本或RunspaceConfiguration? 另外,如果使用RunSpaceConnectionI
public static void RunspaceSample(string computerName)
{
Runspace rs;
if (string.IsNullOrEmpty(computerName))
{
rs = RunspaceFactory.CreateRunspace();
}
else
{
var connectionInfo = new WSManConnectionInfo
{
OperationTimeout = 10000,
OpenTimeout = 10000,
ComputerName = computerName
};
rs = RunspaceFactory.CreateRunspace(connectionInfo);
}
rs.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = rs;
string script = @"$ComputerName = 'somevm'; $null = Add-VMToCluster -Name $ComputerName -VMName $ComputerName -ErrorAction SilentlyContinue -verbose";
ps.AddScript(script);
Console.WriteLine("Script: {0}", script);
Console.WriteLine("------------------------");
foreach (PSObject result in ps.Invoke())
{
Console.WriteLine(result.ToString());
}
if (ps.HadErrors)
{
var sb = new StringBuilder();
foreach (var errorRecord in ps.Streams.Error)
{
sb.AppendFormat("\nError: {0} CategoryInfo: {1}", errorRecord.Exception.Message, (errorRecord.CategoryInfo != null) ? errorRecord.CategoryInfo.ToString() : string.Empty);
}
var errorMessage = sb.ToString();
Console.WriteLine(errorMessage);
}
}
FailoverClusters模块仅在64位PowerShell会话中可用。将此程序集设置为64位程序集解决了模块未找到问题