在前面的章节中,主要介绍了Powershell的开发工具,变量,运算符以及一些特殊的变量,从本节开始介绍Powershell中的语法结构。


  • 本节主要介绍Powershell中的if条件判断。另外希望读者从本节开始使用Powershell_ISE进行代命令的输入与运行,Powershell_ISE提供了界面化的命令输入,参数提示,自带补全,debug等特性,非常有利于编写正确的脚本。


if可用于根据一个或多个条件测试的结果选择运行不同的命令。与Java、C#、C、C++编程语言中的if的使用方法完全一致。

if 语句的语法:       

if (<测试条件1>)
    <语句块1>}
[elseif (<测试条件2>)
    {<语句块2>}]
[else
    {<语句块3>}]

    运行 If 语句时,PowerShell 计算 <测试条件1> 条件表达式的结果是 true 还是 false。

  • 如果 <测试条件1> 为 true,则运行 <语句块1>,并且 PowerShell 退出if语句。

  • 如果 <测试条件1> 为 false,则 PowerShell 计算 <测试条件2> 条件表达式所指定的条件。

  • 如果 <测试条件2> 为 true,则运行 <语句块2>,并且 PowerShell 退出 if 语句。

  • 如果 <测试条件1> 和 <测试条件2> 的计算结果都为 false,则运行 <语句块3> 代码块,并且PowerShell 退出 if 语句。


注意: 在其他语言中,else if判断分支中的else和if都是分开的,但是在Powershell中的,两个单词是连接在一起的,需要特别注意。


下面举例说明if语句的使用。

  1. if语句只包含一个判断分支。

$a=3
if ($a -gt 2)
{
    Write-Host "The value $a is greater than 2."
}

在开始处定义了$a=3,然后对a的进行判断,显然条件成立,最后会打印出

"The value $a is greater than 2."

2. 也可以对其添加else分支,如

$a=3
if ($a -gt 2)
{
    Write-Host "The value $a is greater than 2."
}
else
{
    Write-Host "The value $a is less than or equal to 2, is not created or is not initialized."
}

3. 添加elseif即可实现对条件的多次判断。

if ($a -gt 2)
{
    Write-Host "The value $a is greater than 2."
}
elseif ($a -eq 2)
{
    Write-Host "The value $a is equal to 2."
}
else
{
    Write-Host "The value $a is less than 2 or was not created or initialized."
}


  • 总结

if判断用来判断条件是否成立,并执行相应的操作。比如判断知道的文件或者文件夹是否存在,如果存在就写入文件,如果不存在就创建文件。比如判断知道的调用是否正确执行等等。