【问题标题】:Confirming with Try, Catch用 Try, Catch 确认
【发布时间】:2012-07-18 14:04:19
【问题描述】:

我创建了一个脚本,用于在 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 个最新快照之外的所有快照均已删除。目前我正在尝试使用 if 语句进行确认,但是我的 if 语句没有得到任何输出。无论如何,我很好奇是否有更好的方法来执行我的脚本的第二部分来确认,而不是使用 if 语句来确认脚本保留当前的 ​​6 个最新快照。

谢谢!

【问题讨论】:

  • 您遇到了什么异常?发布完整的错误消息通常会有所帮助。 (必要时过滤)

标签: powershell scripting vmware powercli


【解决方案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,则写下你想要的文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 2011-06-03
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    相关资源
    最近更新 更多