ForEach
是一个PowerShell语句,用于对给定的对象、字符串、数字等的列表、数组或集合进行迭代或循环。ForEach是一种非常流行的循环机制,我们可以在其中使用loop等不同的情况 通过文件、数字、字符串、进程等。Powershell 4.0版为 ForEach
循环。
PowerShell ForEach语法
Foreach语句的语法如下 ITEM
, COLLECTION
和 CODE-BLOCK
.
ForEach(ITEM in COLLECTION){ CODE BLOCK}
- ITEM是一个值或对象,在每次迭代中都会发生变化。
- 集合是数组、集合、值列表或1、2、3、4等对象。
- 代码块是实际操作运行的块,通常使用ITEM。 此块可以是一行或多行。
通过字符串数组Foreach
通过一种简单的方法,我们可以迭代给定的字符串数组列表。我们遍历名为“cities”的数组,该数组包含多个城市 名字。我们将用下面的“echo”命令打印每个城市的名字。
$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}

我们可以看到,每一个城市的名字都被打印到powershell终端的一行中。
通过一系列数字
在上一个示例中,我们循环了给定的字符串列表。我们也可以迭代或循环一系列的数字。我们将创建一个名为 numbers
迭代这个数字数组中的每一项。
$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}

$使用
当使用一些cmdlet将cmdlet的输出重定向到Foreach时,我们可以对每个项或对象使用“$”。例如,如果使用“Get Process”cmdlet,则每个项或进程都将分配给 $
在每次迭代中。我们可以指定像Name这样的属性 $.Name
打印如下。
PS> Get-Process | ForEach-Object {$_.ProcessName}

我们也可以在foreach中通过逗号分隔多个属性来打印它们。
PS> Get-Process | ForEach-Object {$_.ProcessName, $_.ID}

浏览文件
我们还可以使用 Get-ChildItem
cmdlet。 Get-ChildItem
将列出文件和文件夹,如 dir
MSDOS命令。此输出将用 Echo
命令。
foreach($file in Get-ChildItem) {Echo $file}

Foreach通过特定的文件扩展名,比如Bat
我们可以具体列出指定的扩展名。扩展名通常提供文本、avi、mkv、mp3、doc等文件类型。在本例中,我们只列出 *.bat
或Bat文件。
foreach($file in Get-ChildItem *.bat) {Echo $file}

我们可以看到只有 test.bat
和 autoexec.bat
将被列出。
相关文章: 如何传递和解析Linux Bash脚本参数
Foreach Over CSV文件
CSV文件用于以结构化方式存储文本数据。我们可以很容易地foreach在CSV文件的每一行,如下所示。在这个例子中,我们将读取一个IP地址 CSV文件并提供给 foreach
打印Powershell控制台。
$IPs = (Get-Content IP.csv)[0].split(",")foreach ( $IP in $IPs){ echo $IP}