我正在尝试使用 .NET 的 System.Management 库运行不同的 PowerShell 命令,但我看到每次运行空间共享同一个 shell。更具体地说,如果我在我的操作系统上打开一个 PowerShell 窗口并运行以下命令:
Get-Runspace
我得到以下输出:
Id Name ComputerName Type State Availability
-- ---- ------------ ---- ----- ------------
1 Runspace1 localhost Local Opened Busy
如果我现在打开另一个窗口并再次运行相同的命令,我会得到相同的输出,据我所知,我在不同的会话中有不同的运行空间具有相同的名称。如果我错了,请在这里纠正我!
现在,如果我运行以下代码来运行该Get-Runspace
命令两次:
static void Main(string[] args)
{
for (int i = 1; i <= 2; i++)
{
PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-Runspace");
var result = ps.Invoke();
foreach (PSObject elem in result)
{
Runspace runspace = (Runspace)elem.BaseObject;
Console.WriteLine(runspace.Name);
}
Console.WriteLine();
}
Console.ReadLine();
}
我得到以下输出
Runspace1
Runspace1
Runspace2
这意味着 Runspace1 从 Runspace2 可见,因此它们共享相同的 shell。
相反,我希望得到以下输出,其中两个运行空间位于不同的 shell 中:
Runspace1
Runspace1
这种行为是可能的还是我的逻辑被打破了?请注意,关闭运行空间不足以解决我的问题。