[英]How do I Create a RunspaceConnectionInfo object for PowerShell?
[英]Some of the PowerShell module (Cluster cmdlets) does not get loaded when I create RunSpace on a localhost without providing runspaceconnectioninfo
請參考以下示例: RunspaceSample(string.Empty); 失敗並顯示術語“Add-VMToCluster”未被識別為 cmdlet 的名稱。 而 RunspaceSample("localhost") 或 RunspaceSample("somecomputerName") 成功。 任何指針為什么是它? 包含 RunspaceConnectionInfo 是否會更改用於執行的 powershell 版本或 RunspaceConfiguration ? 另外,如果我使用 RunSpaceConnectionInfo 和 ComputerName = "localhost" 創建 Runspace,即使在本地計算機上執行 powershell 腳本也會對性能產生什么影響?
謝謝
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 位程序集解決了未找到模塊的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.