我正在使用此PowerShell脚本在每个活动设备上恢复Bitlocker:
File "/usr/local/lib/python2.7/dist-packages/pygsheets/worksheet.py", line 293, in get_value
include_tailing_empty_rows=True, value_render=value_render)[0][0]
TypeError: 'bool' object has no attribute '__getitem__'
但是我还想使用以下命令在每个活动设备上通过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
我能够编写第一部分的脚本,但是在第二个命令中内置它并不是很好。
答案 0 :(得分:2)
您正在向错误的方向漂移。
使用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
的脚本块中即可。