0

VM に新しいスナップショットを作成し、その VM の最新の 6 つのスナップショットを除くすべてを削除するスクリプトを作成しました。スクリプトでエラーをチェックし、すべてが正常に機能していることを確認する方法を見つけたいのですが、Powershell で try/catch を使用したことがないので、誰かが私が間違っていることを教えてくれるかどうか知りたいです:

$server = $args[0]
$date = get-date
try{
    new-snapshot -vm $server -name "Auto Created via Powershell" -description $date
}
catch{
    [system.exception]
    "Not finding"}  
get-snapshot -vm $server | sort -property created -desc | select -skip 6 | foreach-object{remove-snapshot $_ -confirm:$false}
if (get-snapshot -vm $server | select -first 6){
    write-host "script is keeping current 6 as expected"
}

新しいスナップショットを作成しているコードの最初の部分は正常に動作します。問題は、最新の 6 つのスナップショットを除くすべてが削除されたことを確認する 2 番目の部分にあります。現時点では、if ステートメントを使用して確認しようとしていますが、if ステートメントから出力が得られません。とにかく、if ステートメントを使用してスクリプトが最新の 6 つのスナップショットを保持していることを確認するのではなく、スクリプトの 2 番目の部分を実行して確認するためのより良い方法があるかどうかに興味がありました。

ありがとう!

4

1 に答える 1

1

だから、これがうまくいくと思って試してみてください。

 $server = $args[0]
    $date = get-date
    try{
        new-snapshot -vm $server -name "Auto Created via Powershell" -description $date
       }
    catch{
          [system.exception]
         "Not finding"}  

    get-snapshot -vm $server | sort -property created -desc | select -skip 6 | foreach-object{remove-snapshot $_ -confirm:$false}

$ListOfVms = get-snapshot -vm $server

if ($ListOfVms.count -eq 6){
    write-host "script is keeping current 6 as expected"
    }

これにより、VM の数がカウントされ、6 に等しい場合は、必要なテキストを記述します。

于 2012-07-19T09:41:52.363 に答える