Добавление и удаление моментальных снимков с помощью 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),'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, потому что я получаю эту ошибку:

Remove-Snapshot : отсутствует аргумент для параметра «Снимок». Укажите параметр типа «VMware.VimAutomation.ViCore.Types.V1.VM.Snapshot[]» и повторите попытку.

Спасибо за помощь.


person rozbeh85    schedule 08.08.2014    source источник
comment
Что касается вашей первой проблемы, я предполагаю, что -Description принимает только строку. Я могу показать вам, как это исправить, когда вопрос снова откроется. Что касается второй части, вы получаете сообщение об ошибке, когда пытаетесь использовать этот скрипт?   -  person JasonMArcher    schedule 08.08.2014
comment
Да, я получаю Remove-Snapshot: отсутствует аргумент для параметра «Снимок». Укажите параметр типа «VMware.VimAutomation.ViCore.Types.V1.VM.Snapshot[]» и повторите попытку.   -  person rozbeh85    schedule 08.08.2014
comment
А, вам нужно сначала получить конкретный снимок, а затем передать его Remove-Snapshot.   -  person JasonMArcher    schedule 08.08.2014
comment
Почему вы закрыли этот вопрос? Я ждал, пока вопрос снова откроется.   -  person rozbeh85    schedule 14.08.2014


Ответы (2)


В части описания вы можете поставить $date = get-date и do -description $date. Это должно сработать.

прежде чем вы сможете удалить снимок, вам нужно получить снимок. Я бы сказал, отредактируйте строку удаления моментального снимка, чтобы включить это:

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

вы даже можете добавить -RemoveChildren:$true (это удалит все снимки)

person Rich    schedule 08.12.2014
comment
У меня также есть скрипт для создания моментальных снимков с использованием списка виртуальных машин в файле .txt. Не знаю, как поместить сюда весь сценарий для всех, поэтому, если вам нужен доступ к сценарию ссылка - person Rich; 08.12.2014

Это должно помочь с тем, что вы ищете. Он находит снимки и удаляет их старше 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

}
person user5905738    schedule 09.02.2016