Multithreading Powershell调用命令中的多线程

Multithreading Powershell调用命令中的多线程,multithreading,powershell,Multithreading,Powershell,我正在运行一个包含函数的脚本,并在多个服务器的跳转点上调用它们。 在这种情况下,Invoke命令按顺序工作,在服务器上依次调用函数A、B和C。 如何并行调用它们? 谢谢在invoke命令中直接使用服务器阵列 Function A{ ...} Function B{ ...} Function C{ ...} $Servers = "Server1","Server2","Server3",... ForEach($server in $servers){ $Se

我正在运行一个包含函数的脚本,并在多个服务器的跳转点上调用它们。 在这种情况下,Invoke命令按顺序工作,在服务器上依次调用函数A、B和C。 如何并行调用它们?
谢谢

在invoke命令中直接使用服务器阵列

Function A{
    ...}
Function B{
    ...}
Function C{
    ...}

$Servers = "Server1","Server2","Server3",... 

ForEach($server in $servers){
  $Session = New-PSSession $server
  Invoke-Command -ScriptBlock ${Function:A} -Session $Session
  Invoke-Command -ScriptBlock ${Function:B} -Session $Session
  Invoke-Command -ScriptBlock ${Function:C} -Session $Session
}

我同意你的观点,但我的函数实际上包含布尔值和其他很多东西。因此,当我运行您刚刚编写的命令时,它会出错。
$servers = 'server1','server2','server3','server4'
$cred = Get-Credential
function a {
echo "Function a $env:COMPUTERNAME"
}
function b {
echo "Function b $env:COMPUTERNAME"
}
function c {
echo "Function c $env:COMPUTERNAME"
}
# Put function definition to import in script block
$allFunctionDefs = "
    function a { ${function:a} }; 
    function b { ${function:b} }; 
    function c { ${function:c} }
"
# Run function
Invoke-Command -ComputerName $servers -ScriptBlock {
    Param( $allFunctionDefs )
    . ([ScriptBlock]::Create($allFunctionDefs))  
    a
    b
    c
} -Credential $cred -ArgumentList $allFunctionDefs