Подтверждение с помощью Try, Catch

Я создал сценарий, который создает новый снимок на виртуальной машине, а затем удаляет все, кроме 6 новейших снимков, на этой виртуальной машине. Я хочу найти способ проверить мой скрипт на наличие ошибок и подтвердить, что все работает нормально, но я никогда раньше не использовал try/catch в Powershell, и мне было любопытно, может ли кто-нибудь помочь мне с тем, что я делаю неправильно:

$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 новейших снимков, были удалены. На данный момент я пытаюсь использовать оператор if для подтверждения, однако я не получаю никаких результатов от своего оператора if. Несмотря на это, мне было любопытно, есть ли лучший способ выполнить вторую часть моего сценария для подтверждения, а не использовать оператор if для подтверждения того, что сценарий сохраняет текущие 6 новейших снимков.

Спасибо!


person Valrok    schedule 18.07.2012    source источник
comment
Какое исключение вы получаете? Обычно полезно опубликовать полное сообщение об ошибке. (фильтруется при необходимости)   -  person Guvante    schedule 18.07.2012


Ответы (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"
    }

Это должно подсчитать количество vms и, если оно равно 6, написать текст, который вы хотите.

person justinf    schedule 19.07.2012