1

今少し困惑していて、コミュニティが私が取り組んでいるプログラムを続けるのを助けるために私にその迅速な後押しを与えることができるかどうか疑問に思っていました。

私が取り組んでいるプログラムのある時点で、配列から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つを除くすべてを正しく削除できますか?

編集:以前は気づかなかった小さな問題を修正しました。

4

2 に答える 2

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?
}
于 2012-07-06T16:12:52.063 に答える
0

作成されたタイムスタンプ属性で逆ソートし、Skipin select オブジェクトを使用して最新の 6 つ以降のすべてを取得します。

$snapshot = get-snapshot -VM "test"

$snapshot | sort created -descending | select -Skip 6 | Remove-Snapshot -Confirm:$false
于 2013-07-30T01:34:16.503 に答える