0
複数のコンピュータからディスク情報を取得して出力したいと考えています。powershell WMIクエリの結果を1つのテーブルにまとめる
これは動作します:
foreach ($args in $file) {
get-WmiObject win32_logicaldisk -Credential $cre -ComputerName $args -Filter "Drivetype=3" |
ft SystemName,DeviceID,VolumeName,@{Label="Total Size";Expression={$_.Size/1gb -as [int] }},@{Label="Free Size";Expression={$_.freespace/1gb -as [int] }} -autosize
}
が、出力は次のようになります。出力は次のようになりますので、
SystemName DeviceID VolumeName Total Size Free Size
---------- -------- ---------- ---------- ---------
Computer1 C: OS 100 31
Computer1 D: DATA 500 200
SystemName DeviceID VolumeName Total Size Free Size
---------- -------- ---------- ---------- ---------
Computer2 C: OS 110 48
Computer2 D: DATA 500 201
SystemName DeviceID VolumeName Total Size Free Size
---------- -------- ---------- ---------- ---------
Computer3 C: OS 100 38
Computer3 D: DATA 500 260
私はそれらを組み合わせたいと思います:
SystemName DeviceID VolumeName Total Size Free Size
---------- -------- ---------- ---------- ---------
Computer1 C: OS 100 31
Computer1 D: DATA 500 200
Computer2 C: OS 110 48
Computer2 D: DATA 500 201
Computer3 C: OS 100 38
Computer3 D: DATA 500 260
私はしました新しいオブジェクトの作成を検討しましたが、WMIクエリ結果を同じヘッダーのループ内のそのオブジェクトに追加する方法が不明です。
もう少しそれがないように、この作品理由として:あなたは表示にそれを必要とするとき
その後
Format-Table
を使用しています。 OPで使用される 'ForEach'ループは、各項目を個別に処理し、' Format-Table'のそれ自身の実行に出力します。パイプ内の 'ForEach-Object'関数は、各項目を個別に処理する間に、パイプの次の部分のすべての出力結果と' Format-Table'コマンドレットの一回の実行を収集しますすべてのデータ – TheMadTechnicianこれは完璧です、ありがとうございます。私は今For-EachObjectがどのように動作するかを理解していると信じています – ElectronicDrug
また、私は$ argsを正しく使っています。さらに私が含まなかったスクリプトには、 '$ defaultServerList = 'computers.txt''と' $ file = get-Content $ defaultServerList'があります。 – ElectronicDrug