2
我刚刚开始使用PowerShell和我有以下脚本:电源外壳多个WMI命令中的if语句
Get-ADComputer -Filter * |
ForEach-Object {
if(Test-Connection -CN $_.dnshostname -Count 1 -BufferSize 16 -Quiet)
{
write-host $_.dnshostname
Get-WmiObject Win32_Process -cn $_.dnshostname | Select ProcessID,ProcessName,ThreadCount
Get-WmiObject Win32_DiskDrive -cn $_.dnshostname;
}
ELSE { write-host $_.dnshostname unavlible }
}
基本上,我想实现的是从我的DC拉每台计算机的列表,测试它们是否已启动,然后使用多个WMI查询轮询它们。我遇到的问题是,当我对第一个Wmi对象进行选择时,我没有得到第二个wmi对象的结果,因为我假设select将被应用于第二个对象,导致没有数据被返回。
任何想法我可以做到这一点。现在我正在使用ping来测试机器的可用性,但这并不是最好的,因为ICMP在某些系统上被阻塞,但WMI仍然是可能的。 ICMP同样可用,但wmi被阻止。是否有更好的方法来执行测试以获取WMI查询将工作的系统列表?