2

空のファイルコレクションを作成してからファイルを追加するにはどうすればよいですか?

これが疑似表現です。

$filelist = get-childitem "c:\somefolder\*"

$keepfiles  = new-object psobject #????
$purgefiles = new-object psobject #????

foreach ($file in $filelist)
{
  if (somecondition)
    $keepfiles | Add-Member $file #?????
  else
    $purgefiles | Add-Member $file #?????
}

#at this point I can use my 2 new collections

前もって感謝します。

4

2 に答える 2

4
$filelist = get-childitem "c:\somefolder\*"

$keepfiles  = new-object System.Collections.ArrayList
$purgefiles = new-object System.Collections.ArrayList

foreach ($file in $filelist)
{
  if (somecondition)
    $keepfiles.Add($file)
  else
    $purgefiles.Add($file)
}

#at this point I can use my 2 new collections
于 2011-08-09T21:07:42.953 に答える
3

@EBGreenの回答はあなたの質問に直接対応していますが、以下を使用して、より簡潔に、そして間違いなくよりPowershellの方法で必要なことを達成できます。

あなたはこのようにそれを行うことができます:

$filelist = get-childitem "c:\somefolder\*" 
$keepfiles = $filelist | ?{somecondition}
$purgefiles =  $filelist | ?{-not (somecondition)}
#$purgefiles =  compare $filelist $keepfiles | %{$_.InputObject}

(また、変数を収集するのではなく、ステートメントをクラブ化してパイプライン化すると、オブジェクトが利用可能になるたびにパイプラインを介して「ストリーミング」されるため、パフォーマンスが向上します。また、おそらく、保持またはパージのみを計算し、ほとんどの場合、クラブは理にかなっています)

于 2011-08-09T21:27:55.840 に答える