2016-05-31 3 views
0

erstellt Bitte beachten Sie das folgende Beispiel: RunspaceSample (string.Empty); schlägt fehl mit Der Begriff 'Add-VMToCluster' wird nicht als Name eines Cmdlets erkannt. Während RunspaceSample ("localhost") oder RunspaceSample ("somecomputername") erfolgreich sind. Irgendein Zeiger warum ist es? Ändert RunspaceConnectionInfo die verwendete Powershell-Version oder RunspaceConfiguration, die für die Ausführung verwendet wird? Auch was wäre der Leistungseinfluss, wenn ich Runspace mit RunSpaceConnectionInfo mit ComputerName = "localhost" selbst für die Ausführung von Powershell-Skripten auf einem lokalen Computer erstelle?Einige der PowerShell-Module (Cluster-Cmdlets) werden nicht geladen, wenn ich RunSpace auf einem lokalen Host ohne Bereitstellung von runspaceconnectioninfo

Dank

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

Antwort

0

Das FailoverClusters Modul ist in 64-Bit-Powershell-Sitzungen zur Verfügung. Wenn diese Assembly als 64-Bit-Assembly erstellt wurde, wurde das Problem mit dem Modul nicht behoben.

Verwandte Themen