我正在尝试使用PowerCLI从多台服务器获取快照。
Connect-VIServer -server 192.168.0.1 -user acconut -password xxx
$vmlist = Get-Content C:\Users\Desktop\Test\Servers.txt
foreach($VM in $VMlist) {
New-Snapshot -VM $vm -Name Temp-SnapShot -description (get-date),'Created for patching'
}
Disconnect-VIServer -Confirm:$false
如果我删除get-date
,脚本将有效。但我需要在描述中输入日期。我应该如何更改上面的脚本以在快照的描述中获得Get-Date
?
此外,我需要在几天后删除这些快照:
Connect-VIServer -server 192.168.0.1 -user acconut -password xxx
$vmlist = Get-Content C:\Users\Desktop\Test\Servers.txt
foreach($VM in $VMlist) {
Remove-Snapshot -VM $vm -snapshot -confirm:$false
}
Disconnect-VIServer -Confirm:$false
我无法使用Remove-Snapshot
删除快照,因为我收到此错误:
删除快照:缺少参数'快照'的参数。指定类型为' VMware.VimAutomation.ViCore.Types.V1.VM.Snapshot []'的参数。然后再试一次。
感谢您的帮助。
答案 0 :(得分:2)
在说明部分,您可以放置$date = get-date
和do -description $date
。这应该有用。
在删除快照之前需要的快照之前。我会说编辑你的删除快照行以包含这个:
Get-Snapshot -VM $vm | Remove-Snapshot -confirm:$false
您甚至可能想要添加-RemoveChildren:$ true(这将删除"所有"快照)
答案 1 :(得分:0)
这应该有助于你正在寻找什么。它找到了快照并删除了超过10天的任何内容。
$snaps = Get-VM | Get-snapshot | Select vm,name,created
if ($snaps.created -le (get-date).adddays(-10))
{
$remsnaps = $snaps | Where {$_.created -le (get-date).adddays(-10)}
$remsnaps | Out-File "C:\Scripts\RemoveSnaps\logs\remsnapsVC.txt"
$remobject = Get-Content "C:\Scripts\RemoveSnaps\logs\remsnapsVC.txt"
$rmsnap = Get-Snapshot $remsnaps.vm
Remove-Snapshot -Snapshot $rmsnap -RemoveChildren -Confirm:$false #-WhatIf
$MessageSubject = "The following snaps were removed from NTVCenter01!"
$MessageBody = $remobject | fl | out-string
SendEmail
}