Массив снимков PowerCLI
Немного сбит с толку прямо сейчас, и мне было интересно, может ли сообщество дать мне такой быстрый импульс, чтобы помочь мне продолжить программу, над которой я работаю.
В какой-то момент в программе, над которой я работаю, я пытаюсь получить 6 новейших элементов из массива. Я хочу поместить переменную снимка в массив, чтобы получить все снимки внутри массива. Вот часть кода, которая смущает меня в данный момент:
$server = "test"
$date = get-date
$tempArray = @()
$snapshot = get-snapshot -VM "test"
foreach ($item in $snapshot){
$tempArray += $item
}
$tempArray | sort
for ($i = 0; $i -le $tempArray.length-6; $i++){
remove-item $tempArray[$i]
}
Достигаю ли я своей цели - получить переменную $ snapshot внутри моего массива, и правильно ли в цикле for удаляются все, кроме 6 самых новых?
РЕДАКТИРОВАТЬ: Исправлены небольшие проблемы, которые раньше не замечались.
2 ответа
Ваш код имеет несколько проблем. Я не уверен, исправит ли это ваш сценарий, но это кажутся очевидными проблемами, которые вы должны исправить в первую очередь.
foreach ($item in $snapshot){
$tempArray++ -> this should be $tempArray += $item, right? if you are adding $item to the tempArray
}
$tempArray | sort
for ($i = 0; $i -le $tempArray.length-6; $i++){
remove-item $snapshot -> this should be remove-item $tempArray[$i], right?
}
Выполните обратную сортировку по созданному атрибуту временной метки, а затем используйте Skip
в выбранном объекте, чтобы получить все после 6 самых новых
$snapshot = get-snapshot -VM "test"
$snapshot | sort created -descending | select -Skip 6 | Remove-Snapshot -Confirm:$false