当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

作者:精品下载站 日期:2024-12-14 04:52:40 浏览:15 分类:玩电脑

PowerShell 继续 | PowerShell 完整指南 继续


[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

PowerShell 简介 继续

PowerShell中的Continue语句用于跳过循环的当前执行并将执行返回到最内层循环的顶部。 continue语句一般与条件语句一起使用,条件语句由While、For、Foreach等循环控制。当在循环内执行 continue 语句时,它会跳过当前迭代并移至最内层循环进行下一次迭代。

语法:

Continue

continue 关键字用作该语句的语法。该语句主要用在条件内部。

代码:

$i = 0
while($i -lt 5){
$i++
if($i -eq 3){Continue}
Write-Host "i = $i"
}

输出:

[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

实施 PowerShell 的示例继续

以下是要实施的示例:

示例 #1 - 使用 For 循环的Continue 语句

代码:

for($i=1;$i -le 5; $i++){
if($i -eq 3){Continue}
Write-Host "i = $i"
}

输出:

[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

说明:与While循环类似,当for循环执行Continue语句时,程序会循环遍历每个值,当该值变为3时,它会跳过执行并再次返回到For循环。

示例 #2 - 使用数组的 continue 语句

代码:

$array = 1..5
foreach($val in $array){
if($val -eq 3){Continue}
Write-Host "Val : $val"
}

输出:

[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

在此示例中,我们声明了一个从值 1 到 5 的数组,当 $i 的值变为 3 时,将执行 continue 语句并跳过该迭代。

使用数组的 continue 语句的另一个示例。在下面的示例中,我们有字符串数组,如果数组的值为“Rabbit”,则需要跳过对数据的处理。 检查下面的代码以执行相同的操作。

代码:

$values = "Dog","Cat","Rabbit","Tiger"
foreach($val in $values){
if($val -eq "Rabbit"){Continue}
$val
}

输出:

[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

示例#3 - 使用 Foreach 循环的Continue 语句

在下面的示例中,我们将检查给定的名为“style.css”的文件名是否匹配,如果是,则我们将跳过该步骤并继续下一步。我们的文件夹内容如下,Style.css 文件位于文件夹内容中。

代码:

Get-ChildItem D:\Temp

输出:

[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

现在,我们将使用 continue 语句来跳过 Style.css 操作。为此,我们将检查 Get-ChildItem 中的每个文件,如果找到该文件,则跳过该文件的操作。

代码:

$files = Get-ChildItem D:\Temp
foreach($file in $files){
if($file.Name -eq "Style.css"){Continue}
$file
}

输出:

[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

您不会在输出中看到 style.css 文件。

Foreach 循环的另一个例子。

在下面的例子中,我们需要获取计算机的磁盘信息,但我们只需要计算机上固定的本地磁盘。为此,我们首先需要检查提供固定本地磁盘的参数。我们将使用以下命令。

代码:

Get-CimInstance Win32_LogicalDisk

输出:

[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

我们在本地服务器上有逻辑磁盘的输出,并且我们的输出需要 DriveType“3”。我们可以使用其他方法,例如Where或Filter。我们将尝试获得与下面的Where 管道命令产生的相同结果。

代码:

Get-CimInstance Win32_LogicalDisk | where{$_.DriveType -eq '3'}

输出:

[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

我们将编写一个脚本来获得与Continue 语句相同的输出。

代码:

$disks = Get-CimInstance Win32_LogicalDisk
foreach($disk in $disks){
if($disk.Drivetype -ne '3'){Continue}
$disk
}

在上面的脚本中,我们将所有磁盘存储到名为 $disks 的变量中,并使用其驱动器类型逐一扫描每个磁盘。如果 DriveType 不是“3”,则跳过对磁盘的处理,因此此时不会执行 $disk 命令,而当 DriveType 为“3”时,它会跳过Continue 语句并运行 $disk 输出,其中是固定逻辑磁盘的结果。

输出:

[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

示例#4 -带有嵌套循环的Continue语句

在下面的示例中,我们将看到Continue 语句如何与嵌套循环配合使用。

代码:

for($i=1;$i -lt 5;$i++){
for($j=1;$j -lt 3;$j++){
if($i -eq 3){Continue}
Write-Host "i = $i"
Write-Host "j = $j`n"
}
}

输出:

[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

在此示例中,我们在第二个 for 循环中使用 continue 语句。因此,一旦 $i 的值达到 3,就会执行 continue 语句,并跳过执行脚本中接下来的两个命令。正如您在输出中看到的,$i(number 3) 的值被排除,因此与变量 $j 关联的值。

如果将 continue 语句移到第一个循环中,结果将是相同的。

代码:

for($i=1;$i -lt 5;$i++){
if($i -eq 3){continue}
for($j=1;$j -lt 3;$j++){
Write-Host "i = $i"
Write-Host "j = $j`n"
}
}

输出:

[玩转系统] PowerShell 继续 | PowerShell 完整指南 继续

结论

当有多个值需要处理并且您想跳过对特定值的检查以便不会为它们处理命令时,Continue 语句似乎非常有用。请注意,Continue 语句将执行返回到循环顶部,如果您希望完全终止循环,则需要使用 Break 语句。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯