【发布时间】:2017-03-22 13:27:47
【问题描述】:
我正在使用 Powershell 查询许多远程计算机上的 WMI 类。
我有以下效果很好,但由于对远程计算机执行任何操作都需要一些时间,我希望将其最小化:
$file = Get-Content c:\temp\bitlocker\non-compliant-wksn1.txt
foreach ($ComputerName in $file) {
if (Test-Connection -ComputerName $ComputerName -Quiet) {
$Hostname = (Get-WmiObject -Class Win32_ComputerSystem -ComputerName $ComputerName).Name
$model = (Get-WmiObject -Class Win32_ComputerSystem -ComputerName $ComputerName).Model
$OS = (Get-WmiObject -Class Win32_OperatingSystem -ComputerName $ComputerName).Version
$TpmActivate = (Get-WMIObject -Namespace "root/CIMV2/Security/MicrosoftTpm" -query "SELECT * FROM Win32_TPM" -ComputerName $ComputerName).IsActivated_InitialValue
$TpmEnabled = (Get-WMIObject -Namespace "root/CIMV2/Security/MicrosoftTpm" -query "SELECT * FROM Win32_TPM" -ComputerName $ComputerName).IsEnabled_InitialValue
$TpmOwned = (Get-WMIObject -Namespace "root/CIMV2/Security/MicrosoftTpm" -query "SELECT * FROM Win32_TPM" -ComputerName $ComputerName).IsOwned_InitialValue
$Encrypted = (Get-WMIObject -Namespace "root/CIMV2/Security/MicrosoftVolumeEncryption" -query "SELECT * FROM Win32_EncryptableVolume WHERE DriveLetter='C:'" -ComputerName $ComputerName).ProtectionStatus
write-host $ComputerName "`t" $Hostname "`t" $model "`t" $OS "`t" $TpmActivate "`t" $TpmEnabled "`t" $TpmOwned "`t" "C:" "`t" $Encrypted
}
else {
write-host $Computername "`t" "Offline"
}
}
从代码中可以看出,我进行了 2 次远程调用以从 Win32_ComputerSystem 获取 2 个值,并进行 3 次远程调用以从 Win32_TPM 获取 3 个值。是否可以接受这 5 个远程调用并以某种方式将它们减少为 2 个远程调用(每个类一个),返回我需要的所有信息并将它们存储在我的变量中(希望这会加快速度)?
TIA
【问题讨论】:
标签: powershell wmi