为什么以下方法没有接受RunspaceConnectionInfo(指定远程服务器信息)以及InitialSessionState的重载?
我正在构建一个RunspacePoolCache,它将缓存使用RunspaceFactory创建的远程RunspacePools。缓存是在远程服务器信息上键入的。直到池的RunspacePoolStateInfo.State为Open,相同的RunspacePool将用于在同一远程服务器上执行Powershell脚本。 (无耻插头:这会起作用吗?)
现在,我想添加一组Powershell管理单元,这些管理单元对于创建的RunspacePool是通用的。在执行的脚本中添加管理单元有时会导致以下异常:
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加载管理单元的地方。但是从提供的方法集中,似乎只能在创建本地RunspacePools时指定InitialSessionState。
答案 0 :(得分:0)
要向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)