gpt4 book ai didi

c# - 为什么无法为远程 RunspacePool 传递 InitialSessionState?

转载 作者:行者123 更新时间:2023-11-30 18:27:46 29 4
gpt4 key购买 nike

为什么以下方法没有接受 RunspaceConnectionInfo 的重载(指定远程服务器信息)以及 InitialSessionState

http://msdn.microsoft.com/en-us/library/system.management.automation.runspaces.runspacefactory.createrunspacepool(v=vs.85).aspx

完整上下文:

我正在构建一个 RunspacePoolCache,它将缓存使用 RunspaceFactory 创建的远程 RunspacePool。缓存以远程服务器信息为键。在池的 RunspacePoolStateInfo.State 为 Open 之前,相同的 RunspacePool 将用于在同一远程服务器上执行 Powershell 脚本。 (不要脸的外挂:这样行吗?)

现在,我想添加一组对创建的 RunspacePool 通用的 Powershell 管理单元。在执行的脚本中添加管理单元有时会导致以下异常:

An item with the same key has already been added

即使我在 Powershell 脚本中执行以下操作时也会发生这种情况(但频率较低):

if ((Get-PSSnapin | ? { $_.Name -eq 'VeeamPSSnapIn' }) -eq $null) {
Add-PsSnapin -Name VeeamPSSnapIn -ErrorAction SilentlyContinue
}

这就是我尝试通过 InitialSessionState 加载管理单元的地方.但是从提供的一组方法来看,似乎只能在创建本地 RunspacePool 时指定 InitialSessionState。

最佳答案

要将管理单元添加到 ISS,您可以使用 ImportPSSnapIn 方法。示例:

$iss = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault()
s.ImportPSSnapIn($snapName,[ref]'') | Out-Null

你像这样创建运行空间池:

$runspacePool =    [System.Management.Automation.Runspaces.RunspaceFactory]::CreateRunspacePool($minRunspaces, $maxRunspaces, $iss, $Host)

关于c# - 为什么无法为远程 RunspacePool 传递 InitialSessionState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26275700/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com