Virtual machine 使用PowerCLI为多台服务器添加和删除快照

Virtual machine 使用PowerCLI为多台服务器添加和删除快照,virtual-machine,snapshot,powercli,Virtual Machine,Snapshot,Powercli,我正在尝试使用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),'Creat

我正在尝试使用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  
我无法使用
删除快照
删除快照,因为我遇到以下错误:

删除快照:缺少参数“快照”的参数。请指定类型为“VMware.VimAutomation.ViCore.Types.V1.VM.Snapshot[]”的参数,然后重试


谢谢您的帮助。

在描述部分,您可以将
$date=get date
do-description$date
放在描述部分。这应该行得通

在删除快照之前,需要先获取快照。我建议编辑删除快照行以包括以下内容:

Get-Snapshot -VM $vm | Remove-Snapshot -confirm:$false

您甚至可能想要添加-RemoveChildren:$true(这将删除“所有”快照)

这将有助于您查找的内容。它会查找快照并删除任何超过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

}

对于第一个问题,我猜
-Description
只需要一个字符串。当问题重新出现时,我可以告诉你如何解决这个问题。对于第二部分,在尝试该脚本时是否出现错误?是的,我得到的是删除快照:缺少参数“Snapshot”的参数。请指定类型为“VMware.VimAutomation.ViCore.Types.V1.VM.Snapshot[]”的参数,然后重试。啊,您需要先获取特定的快照,然后将其传递到
删除快照
。为什么关闭此问题?我一直在等待问题重新出现。我还有一个脚本,可以使用.txt文件中的虚拟机列表拍摄快照。不知道如何将整个脚本放在这里,因此如果您需要访问脚本