Get-WmiObject Win32_Service | ForEach-Object{ if($_.ProcessId -gt 3000) {"{0}({1})" -f $_.DisplayName,$_.ProcessId} }3、调用方法 在ForEach-Object中,$_代表当前对象,当然也允许通过$_,调用该对象支持的方法。 下面的例子杀死所有IE浏览器进程:
$n=5 while($n -gt 0) { $n $n=$n-1 } #5 #4 #3 #2 #1终止当前循环 使用continue关键字,可是终止当前循环,跳过continue后其它语句,重新下一次循环。
$n=1 while($n -lt 6) { if($n -eq 4) { $n=$n+1 continue } else { $n } $n=$n+1 } #1 #2 #3 #5跳出循环语句 跳出循环语句使用break关键字
$n=1 while($n -lt 6) { if($n -eq 4) { break } $n $n++ }
$Sum=0 For($i=1;$i -le 100;$i++) { $sum+=$i } $sumFor循环是特殊类型的While循环 在For循环开始的圆括号中,由分号隔开的语句为循环的控制条件,分别为:初始化,循环执行满足的条件,增量。 For循环的控制语句第一个和第三个可以为空:
$sum=0 $i=1 for(;$i -le 100;) { $sum+=$i $i++ } $sumFor循环的特殊应用 上面的For循环示例停留在数字层面上,其实While循环能办到的事,For循环也可以,只是可能有时不方便而已。例如判断域名的例子:
for($domain="";!($domain -like "www.*.*");$domain=Read-Host "Input domain") { Write-Host -ForegroundColor "Green" "Please give a valid domain name." }下面的例子演示逐行读取文本文件
for($file=[IO.File]::OpenText("D:\game\test.txt") ; !($file.EndOfStream);$line=$file.ReadLine() ) { $line; } $file.Close()
#使用Foreach循环 $nums=10..7 foreach($n in $nums) { "n=$n" } n=10 n=9 n=8 n=7 #使用Switch循环 $nums = 10..7 Switch ($nums) { Default { "n= $_" } } n= 10 n= 9 n= 8 n= 7有时对集合的处理,在循环中还须条件判断,使用Switch循环可以一部到位,例如:
$nums = 10..7 Switch ($nums) { {($_ % 2) -eq 0} {"$_ 偶数"} {($_ % 2) -ne 0} {"$_ 奇数"} } 10 偶数 9 奇数 8 偶数 7 奇数