我创建了一个脚本,用于在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个最新快照。
谢谢!
答案 0 :(得分: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,则写下你想要的文本。