Как удалить конкретный снимок с помощью Powershell в Hyper-V

Дорогие,

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

PS C:\Users\abood>  Get-VMSnapshot -VMName KUW-HV01

VMName   Name SnapshotType CreationTime         ParentSnapshotName
------   ---- ------------ ------------         ------------------
KUW-HV01 OLD  Standard     7/22/2020 9:17:48 PM                   
KUW-HV01 NEW  Standard     7/22/2020 9:18:08 PM OLD  

PS C:\Users\abood>  Remove-VMSnapshot -VMName KUW-HV01 -WhatIf | Where-Object {$_.Name -eq "NEW"}
What if: Remove-VMSnapshot will remove snapshot "NEW".
What if: Remove-VMSnapshot will remove snapshot "OLD".

Как я могу удалить только НОВЫЙ или СТАРЫЙ, сохранив при этом другой?

Заранее спасибо,


person Aboodnet    schedule 22.07.2020    source источник


Ответы (1)


Большинство командлетов, которые выполняют действие над чем-либо (например, Remove-VMSnapshot), позволяют передавать в них объекты, чтобы указать, над какими объектами следует выполнять это действие. Например, вы уже использовали Get-VMSnapshot для получения двух моментальных снимков этой конкретной виртуальной машины. Затем вы можете использовать Where-Object, чтобы указать только моментальный снимок, который вы хотите удалить, и отфильтровать все, что вы хотите сохранить, следующим образом:

Get-VMSnapshot -VMName KUW-HV01 | Where-Object {$_.Name -eq "NEW"}

VMName   Name SnapshotType CreationTime         ParentSnapshotName
------   ---- ------------ ------------         ------------------
KUW-HV01 NEW  Standard     7/22/2020 9:18:08 PM OLD  

Затем вы передаете это Remove-VMSnapshot, чтобы точно указать, что вы хотите удалить.

Get-VMSnapshot -VMName KUW-HV01 | Where-Object {$_.Name -eq "NEW"} | Remove-VMSnapshot -WhatIf

Это должно привести к следующему:

What if: Remove-VMSnapshot will remove snapshot "NEW".
person TheMadTechnician    schedule 22.07.2020
comment
Спасибо, приятель, это сработало, но почему Remove-VMSnapshot -VMName KUW-HV01 -WhatIf | Где-объект {$_.Name -eq NEW} не работал должным образом? это баг или что? - person Aboodnet; 22.07.2020
comment
Нет, совсем не баг. Эта команда приказывает удалить снимки (все, так как вы не указываете, какой из них командлету Remove-VMSnapshot), и после этого вы отправляете вывод в Where-Object. Честно говоря, все это можно было бы сократить до Remove-VMSnapshot -VMName KUW-HV01 -Name NEW, но я хотел показать вам, как работает Where, и как он влияет только на то, что находится дальше по конвейеру, а не на то, что предшествует ему. - person TheMadTechnician; 22.07.2020
comment
Хорошо, теперь я понимаю. Последний вопрос: можно ли использовать подстановочные знаки в Remove-VMSnapshot -VMName KUW-HV01 -Name NEW? - person Aboodnet; 23.07.2020
comment
Согласно документации можно. Они делают это в своем примере, который они дают. - person TheMadTechnician; 24.07.2020
comment
Спасибо, приятель. Я ценю вашу помощь. - person Aboodnet; 25.07.2020