【发布时间】:2021-08-16 17:45:24
【问题描述】:
简要说明我正在尝试做的事情:
我正在开发一个 .Net WinForm 应用程序,我试图在远程服务器上运行多个 PowerShell 脚本并在表单上显示结果。
此时我正在同步执行脚本,这给我带来了长时间运行脚本的问题。
知道如何让这个函数异步执行吗?
public string NewPsSession(string ServerName, string command)
{
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
PowerShell psSession = PowerShell.Create();
psSession.Commands.AddScript("$sessions = New-PSSession -ComputerName " + ServerName + Environment.NewLine
+ "Invoke-Command -session $sessions -ScriptBlock {" + command + "}" + Environment.NewLine
+ "Remove-PSSession -Session $sessions" + Environment.NewLine);
psSession.Commands.AddCommand("Out-String");
Collection<PSObject> results = new Collection<PSObject>();
try
{
results = psSession.Invoke();
}
catch (Exception ex)
{
results.Add(new PSObject((object)ex.Message));
}
runspace.Close();
StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject obj in results)
{
stringBuilder.AppendLine(obj.ToString());
}
return stringBuilder.ToString();
}
任何建议将不胜感激。谢谢!
【问题讨论】:
标签: c# multithreading powershell asynchronous parallel-processing