我正在尝试创建一个具有初始会话状态
和最小/最大运行空间计数的
RunspacePool
。然而,RunspaceFactory
上唯一支持所有这些参数的构造函数也需要一个PSHost
:
public static System.Management.Automation.Runspaces.RunspacePool CreateRunspacePool (
int minRunspaces,
int maxRunspaces,
System.Management.Automation.Runspaces.RunspaceConnectionInfo connectionInfo,
System.Management.Automation.Host.PSHost host);
我可以在此处传递 PSHost 的哪些默认实现?这是一个抽象类,
null
不起作用。
PSHost
没有默认实现,但制作一个“裸”实现很简单:
private class BareHost : PSHost
{
public override string Name { get; } = "BareHost";
public override Version Version { get; } = new Version(1, 0);
public override Guid InstanceId { get; } = Guid.NewGuid();
public override PSHostUserInterface UI { get; } = null;
public override CultureInfo CurrentCulture { get; } = CultureInfo.CurrentCulture;
public override CultureInfo CurrentUICulture { get; } = CultureInfo.CurrentUICulture;
public override void EnterNestedPrompt()
{
throw new NotImplementedException();
}
public override void ExitNestedPrompt()
{
throw new NotImplementedException();
}
public override void NotifyBeginApplication()
{
// no-op
}
public override void NotifyEndApplication()
{
// no-op
}
public override void SetShouldExit(int exitCode)
{
// no-op
}
}
用途:
var initialSessionState = InitialSessionState.CreateDefault();
// Customize your session state...
// initialSessionState.ImportPSModule(new[] { "MyModule" });
using var pool = RunspaceFactory.CreateRunspacePool(
minRunspaces: 1,
maxRunspaces: 3,
initialSessionState: initialSessionState,
host: new BareHost());