0
我有我認爲是獨特的情況。我有大約15個PowerShell腳本,我想在一系列計算機上運行,並讓腳本返回每個主機上每個腳本的輸出。一次在多臺機器上運行PowerShell腳本列表
我有什麼作品,但它沒有出現在每個主機上同時運行腳本,而且速度很慢。任何幫助表示讚賞。
for (int i = 0; i < hosts.Length; i++)
{
var remoteComputer = new Uri(String.Format("{0}://{1}:5985/wsman", "http", hosts[i]));
var connection = new WSManConnectionInfo(remoteComputer);
var runspace = RunspaceFactory.CreateRunspace(connection);
runspace.Open();
for (int ii = 0; ii < powerShellfiles.ToArray().Length; ii++)
{
using (PowerShell ps = PowerShell.Create())
{
ps.Runspace = runspace;
//ps.AddScript(powerShellfiles[ii]);
ps.AddScript(powerShellfiles[ii]);
IAsyncResult async = ps.BeginInvoke();
List<string> aa = ps.EndInvoke(async).SelectMany(x => x.Properties.Where(y => y.Name == "rec_num").Select(z => z.Value.ToString())).ToList();
keysFromhost.AddRange(aa);
}
};
};
powerShellfiles中的每個項目都是.ps1文件本身的文本。
這是有效的,但是對於我添加代碼的每個主機來說,速度慢了20秒。我想讓PowerShell文件在給定的機器上同時被關閉。 –
現在我再次查看您的代碼。 這是一種錯誤,你應該加入一個回調到你的開始調用,然後在回調中你結束調用不會開始調用和結束調用在相同的方法執行。 https://msdn.microsoft.com/en-us/library/dd182439(v=vs.85).aspx – JQluv