2017-01-09 9 views
0

Good Evening、私はC#も開発しています。これはユーザーがサーバー上のVMを制御するのに役立つはずです。 ここでは、これらのVMのスナップショットを作成および消去する関数を作成し、ビューの選択されたスナップショットパラメータを含むVMのすべてのスナップショットを一覧表示する関数を作成したいと考えています。 :Hyper-VのPowershellを使用してスナップショットにサイズを取得

Invoke-Command -ComputerName ServerName -ScriptBlock { Get-VMSnapshot -VMName VMName |Select-Object}

私は、ほぼすべての要求された情報が、スナップショット自体の合計サイズを取得することができています。私は、このコマンドを使用してサイズを得ることができるしかし

Invoke-Command -ComputerName ServerName -ScriptBlock {Get-VM -VMName VMName | gci -r -Filter *.avhd*| select @{Name="MB";Expression={$_.Length/1Mb}}, *} 

2つの結果を取得しないように私には、最大10秒の公差でこれら二つの作成時間を比較し、最も近いものを取りました。 (私が知っているプリミティブ)が、今はさらに複雑になります。

スナップショットを使用してVMをこの状態に設定すると、ファイル作成の時間が変わり、以前の方法が完全に機能しなくなります。

私が知りたいのは、これらの2つの結果を比較したり、より優れた方法で、そのようなプリミティブな比較なしでスナップショットサイズを取得する方法があるかどうかです。

ご協力いただきありがとうございます。

答えて

1

以下は1ライナーで十分です。

Get-VM | Format-Table Name, @{Label="NumSnapshots";Expression={(Get-Snapshot -VM $_ | Measure-Object).Count}}, @{Label="TotalSnapShotSizeMB";Expression={(Get-Snapshot -VM $_ | Measure-Object -Sum SizeMB).Sum}} 

1)

Get-VM | Sort Name | Get-Snapshot | Where { $_.Name.Length -gt 0 } | Select VM,Name,Created,SizeMB 

2)は、それがお役に立てば幸いです。

+0

スナップショットの情報セットに独自のサイズが含まれていないため、最初のバージョンでは機能しません。Hyper-Vの作成者は、サイズを重要な値にしていると思われました。ファイルの種類。 2番めは悲しいことにVM名だけを返すので、 'NumSnapshots'と' TotalSnapShotSizeMB'の列は空になります。また、1つのスクリーンショットのサイズが必要になります。すべてのスナップショットの合計サイズは悲しいことです。 しかし、私は間違いなくMeasure-Objectで少しプレイしようとしますが、これは私の問題の潜在的な解決策のようです。 – Etaila

+1

@Etaila:ちょうど2番目のコードをちょっと微調整すれば、選ぶことができます。私は今すぐ選ぶためのインフラを持っていません。私はそれを構築するために時間が必要です。それが役に立ったら –

+0

@エテラ:助けたら答えを受け入れてください。 –

関連する問題