默认的 PSHost 实现是什么(用于 RunspacePool)?

问题描述 投票:0回答:1

我正在尝试创建一个具有初始会话状态

最小/最大运行空间计数的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
不起作用。

c# .net powershell
1个回答
0
投票

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());
© www.soinside.com 2019 - 2024. All rights reserved.