Powershell 限制foreac对象

Powershell 限制foreac对象,powershell,for-loop,foreach-object,Powershell,For Loop,Foreach Object,我在一个数组中循环,但我只想要满足我条件的前10个结果。但我不知道从哪里开始。我想我需要一个for循环,比如$I=0$i-le10$当IF语句为true时,i++和do$i-。我完全是新手:D $result | ForEach-Object { if (($_.City -contains 'Oklahoma') -or ($_.City -like 'Chicago')){ }else { $dosomething } } 我想出了一个办法。有没有其他/更好的

我在一个数组中循环,但我只想要满足我条件的前10个结果。但我不知道从哪里开始。我想我需要一个for循环,比如$I=0$i-le10$当IF语句为true时,i++和do$i-。我完全是新手:D

$result | ForEach-Object {
    if (($_.City -contains 'Oklahoma') -or ($_.City -like 'Chicago')){
    }else {
    $dosomething
   }
}

我想出了一个办法。有没有其他/更好的方法

$i=0;
$result | ForEach-Object {
     if (($_.City -contains 'Oklahoma') -or ($_.City -like 'Chicago') -or (($i -ge 10)){}
     else {
           $dosomething
           $i++;
     }
}

通常的方法是为结果保留一个计数器。当找到所需数量的结果时,break语句将终止循环。这样,

$hits = 0
$maxresults = 10
$result | ForEach-Object {
  if ($_ -match "whatever" ){
   ++$hits
   do-stuff
  } else {
    do-something-else
  }
  if($hits -ge $maxresults) { break }
}

如果您正在寻找一条直线,那么这可能会有所帮助:

$top10=$result |其中对象{$\.City-包含'Oklahoma'-或$\.City-类似'Chicago'}}选择对象-前10个-跳过0

请注意-contains在字符串上的工作方式与您预期的不同。你可能想要像俄克拉何马州那样的美元城市