2012-07-06 3 views
1

지금 당황스럽고 커뮤니티에서 저에게 제가 일하고있는 프로그램을 계속 진행하는 데 도움이 될지 궁금합니다.PowerCLI Snapshots Array

내가 작업하고있는 프로그램의 한 지점에서 배열에서 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] 
} 

내가 내 배열의 내부에 $ 스냅 샷 변수를 얻기의 나의 목표를 달성하고 있는가 내 루프가 올바르게 6 최신 남기고 모두 삭제 관리하고 다음은 순간에 나를 혼동되는 코드의 일부입니다 ?

편집 : 이전에 눈치 채지 못한 작은 문제가 수정되었습니다.

답변

0

코드에 몇 가지 문제가 있습니다. 이 스크립트가 문제를 해결할 지 모르겠지만 우선 해결해야 할 명백한 문제인 것 같습니다.

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? 
} 
는 생성 된 타임 스탬프 속성에 의해
0

역순 정렬은 6 최신

$snapshot = get-snapshot -VM "test" 

$snapshot | sort created -descending | select -Skip 6 | Remove-Snapshot -Confirm:$false 
후 모든 것을 얻기 위해 선택 객체의 Skip를 사용
관련 문제