powershellでhyper-vのゲストvmのHDD使用率一覧を知りたい
のですが、どうしたらいいのでしょうか。
例使用率60%以上のゲストvm一覧とか
だせますでしょうか。。
よろしくお願いします。
ホスト機:windows2012r2
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
こんにちは。
通常Hyper-VでホストからはゲストのVHD単位での割り当てサイズと使用サイズまでなら求めることができ、VHD全体での使用率なら算出可能です。
ざっくり以下の様な感じになります。
powershell
1Get-VM | ForEach-Object { 2 $VMName = $_.Name 3 Get-VHD -VMId $_.ID | ForEach-Object { 4 [PSCustomObject]@{ 5 VMName = $VMName; 6 VHDPath = $_.Path; 7 UsedGB = [Math]::Round($_.FileSize/1GB, 2); 8 AllocatedGB = [Math]::Round($_.Size/1GB, 2); 9 PCTUsed = [Math]::Round($_.FileSize / $_.Size, 4) * 100; 10 } 11 } 12}
ただ、おそらくshigotoさんが求めているのはゲストの各ドライブ毎の使用率かと思います。
残念ながらドライブ毎の使用率はホストから求めることはできません。
PowerShell Remotingなどで個々のゲストVMに接続してドライブ毎の使用率を求めてやる必要があります。
やり方はたくさんありますが簡単な一例を挙げておきます。
powershell
1$block = { 2 Get-PSDrive -PSProvider FileSystem ` 3 | Where-Object { $null -ne $_.Free } ` 4 | ForEach-Object { 5 [PSCustomObject]@{ 6 VMName = $env:COMPUTERNAME; 7 DriveName = $_.Name; 8 UsedGB = [Math]::Round($_.Used/1GB, 2); 9 AllocatedGB = [Math]::Round(($_.Used + $_.Free)/1GB, 2); 10 PCTUsed = [Math]::Round($_.Used / ($_.Used + $_.Free) * 100, 2) 11 } 12 } 13} 14Invoke-Command -ComputerName "VM名 or IP" -Credential "認証情報" -ScriptBlock $block
投稿2017/11/29 03:37
総合スコア796
0
※要管理者権限
PowerShell
1Enable-VMResourceMetering -VMName * 2Get-VM | Measure-VM
で使用量の一覧なら出ますね。
使用率60%以上というと、こういうことでしょうか…?
PowerShell
1Enable-VMResourceMetering -VMName * 2Get-VM | Where-Object {(Measure-VM $_).TotalDisk * 1000000 -ge (Get-Volume -DriveLetter C).Size * 0.6}
投稿2017/11/08 08:59
総合スコア312
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。