同时调用两个 Invoke-Command
Two Invoke-Command at the same time
我正在使用此 PowerShell 脚本在每台活动设备上恢复 Bitlocker:
Get-Content "clients.txt" | ForEach-Object {
if (Test-Connection $_ -Count 1 -ErrorAction 0 -Quiet) {
Invoke-Command -ComputerName $_ -ScriptBlock {
Resume-BitLocker -MountPoint "C:"
}
} else {
Write-Host "$_ is OFFLINE" -ForegroundColor Red
}
}
但我还想通过 Invoke-WMIMethod
在每个活动设备上使用此命令触发硬件清单:
Invoke-WMIMethod -ComputerName $Server -Namespace root\ccm -Class SMS_CLIENT -Name TriggerSchedule "{00000000-0000-0000-0000-000000000001}"
我能够编写第一部分的脚本,但在第二个命令中构建它并不是那么好。
你有点走错方向了。
使用 Invoke-Command
时,它会同时(并行)处理 32 台计算机的脚本块!
如果您使用 foreach
处理计算机,它会按顺序处理它们,这会慢得多。
使用 *WMI cmdlet 时同样有效。始终尝试用相应的 CIM cmdlet 替换它们,因为同样的逻辑适用 - 计算机正在并行处理。
考虑如下:
$ComputerList = Get-Content -Path Clients.txt
Invoke-Command -ComputerName $ComputerList -ErrorAction SilentlyContinue -ScriptBlock {
Resume-BitLocker -MountPoint "C:"
#Add second command
#add third command and so on
}
我不确定,在本地执行时 Invoke-WMIMethod
的替代命令是什么。也许 Set-WMIInstance
,但我只是推测!
然后如果你想添加第二个命令来执行,只需将它添加到 Invoke-Command
的脚本块中。
我正在使用此 PowerShell 脚本在每台活动设备上恢复 Bitlocker:
Get-Content "clients.txt" | ForEach-Object {
if (Test-Connection $_ -Count 1 -ErrorAction 0 -Quiet) {
Invoke-Command -ComputerName $_ -ScriptBlock {
Resume-BitLocker -MountPoint "C:"
}
} else {
Write-Host "$_ is OFFLINE" -ForegroundColor Red
}
}
但我还想通过 Invoke-WMIMethod
在每个活动设备上使用此命令触发硬件清单:
Invoke-WMIMethod -ComputerName $Server -Namespace root\ccm -Class SMS_CLIENT -Name TriggerSchedule "{00000000-0000-0000-0000-000000000001}"
我能够编写第一部分的脚本,但在第二个命令中构建它并不是那么好。
你有点走错方向了。
使用 Invoke-Command
时,它会同时(并行)处理 32 台计算机的脚本块!
如果您使用 foreach
处理计算机,它会按顺序处理它们,这会慢得多。
使用 *WMI cmdlet 时同样有效。始终尝试用相应的 CIM cmdlet 替换它们,因为同样的逻辑适用 - 计算机正在并行处理。
考虑如下:
$ComputerList = Get-Content -Path Clients.txt
Invoke-Command -ComputerName $ComputerList -ErrorAction SilentlyContinue -ScriptBlock {
Resume-BitLocker -MountPoint "C:"
#Add second command
#add third command and so on
}
我不确定,在本地执行时 Invoke-WMIMethod
的替代命令是什么。也许 Set-WMIInstance
,但我只是推测!
然后如果你想添加第二个命令来执行,只需将它添加到 Invoke-Command
的脚本块中。