【问题标题】:Add and Remove Snapshots with PowerCLI for multiple servers使用 PowerCLI 为多个服务器添加和删除快照
【发布时间】:2014-10-02 04:58:42
【问题描述】:

我正在尝试使用 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[]”的参数,然后重试。

感谢您的帮助。

【问题讨论】:

  • 对于你的第一个问题,我猜-Description 只需要一个字符串。当问题重新打开时,我可以告诉你如何解决这个问题。对于第二部分,您在尝试该脚本时是否遇到错误?
  • 是的,我收到了 Remove-Snapshot:缺少参数“快照”的参数。指定类型为“VMware.VimAutomation.ViCore.Types.V1.VM.Snapshot[]”的参数,然后重试。
  • 啊,您需要先获取特定快照,然后将其传递给Remove-Snapshot
  • 你为什么关闭这个问题?我一直在等到问题重新开放。

标签: virtual-machine snapshot powercli


【解决方案1】:

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

}

【讨论】:

    【解决方案2】:

    您可以在描述部分输入$date = get-datedo -description $date。应该可以的。

    在删除快照之前,您需要获取快照。我会说编辑您的删除快照行以包含以下内容:

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

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

    【讨论】:

    • 我还有一个脚本可以使用 .txt 文件中的虚拟机列表来拍摄快照。不知道如何把整个脚本放在这里给任何人,所以如果你需要访问脚本link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多