私はpowershellを使い始めたばかりで、次のスクリプトがあります:
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 オブジェクトで選択を行っているときに、選択が 2 番目のオブジェクトに適用されてデータが返されないと想定しているため、2 番目の wmi オブジェクトの結果が得られないことです。
どうすればこれを行うことができるか考えてください。また、現在、マシンの可用性をテストするために ping を使用していますが、一部のシステムでは ICMP がブロックされているため、これは最善ではありませんが、WMI は引き続き可能です。ICMP が利用可能であるが wmi がブロックされている場合も同様です。WMI クエリが機能するシステムのリストを取得するテストを実行するより良い方法はありますか?