2016-05-31 7 views
0

请参考下面的示例: RunspaceSample(string.Empty);失败与术语'Add-VMToCluster'不被识别为cmdlet的名称。 RunspaceSample(“localhost”)或RunspaceSample(“somecomputerName”)成功。任何指针为什么是它?包括RunspaceConnectionInfo是否会更改所使用的PowerShell版本或用于执行的RunspaceConfiguration? 如果我使用ComputerName =“localhost”的RunSpaceConnectionInfo创建Runspace,即使在本地计算机上执行powershell脚本,性能影响也会如何?当我在本地主机上创建RunSpace而未提供运行空间连接信息时,某些PowerShell模块(群集cmdlet)无法加载

感谢

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

回答

0

的FailoverClusters模块仅在64位PowerShell会话使用。将此程序集作为64位程序集解决了模块未找到问题。

相关问题