PowerShell作为一个动态脚本语言,同样具有条件判断、逻辑控制的能力。诸如if、elseif、else以及switch都是被PowerShell所支持的。

逻辑判断


先来简单介绍最基本的逻辑判断:

    ? -eq 判断是否等于(equal)

    ? -lt 判断时候小于(less than)

    ? -gt 判断是否大于(greater than)

    ? -ge 判断是否大于或等于(greater of equal)

    ? -le 判断是否小于或等于(less or equal)

    ? -ne 判断是否不等于(no equal)

  在之前的几个小节中,如果你注意的话,应该可以发现PowerShell对于大小写并不敏感,可是在某些时候我们却需要区分它们,因此,还可以使用诸如:

    ?  -ieq                   (case-insensitive)

    ?  -ceq                  (case-sensitive)

前者是忽略大小写,后者则是区分大小写。

示例:

 
  
  1. "MaRui" -eq "marui" <enter> 
  2.                                 结果:"True"
  3. "MaRui" -ieq "MARUI" <enter> 
  4.                                 结果:"True"
  5. "MaRui" -ceq "MARUI" <enter> 
  6.                                 结果:"False"

逻辑运算

    ?  -and   与

    ?  -or   或

    ?  -not   非

    ?  !   非

条件


if、else、elseif语句

基本语法:

 
  
  1. if (条件) 
  2. {代码} 
  3. elseif (条件) 
  4. {代码} 
  5. else (条件) 
  6. {代码} 
  7. else
  8. {代码}

例如:

 
  
  1. $n=10 
  2. if ($n -eq 1) 
  3. {"n=1"} 
  4. elseif ($n -ne 1) 
  5. {"n!=1,and n=$n"}

下面的脚本是用来查看本机操作系统的,使用了"if"语句。请复制下面的脚本并且保存为"OS.ps1",用PowerShell运行试试。

 
  
  1. $ComputerName = (Get-WmiObject -class win32_computersystem).name
  2. $OS_Version = (Get-WmiObject -class win32_operatingsystem -computer $ComputerName).version 
  3.  
  4. if (($OS_Version -eq "5.1.2600") -or ($OS_Version -eq "5.2.3790")) 
  5.     write-host "Computer Name:"$ComputerName 
  6.  
  7.     if ($OS_Version -eq "5.1.2600")  
  8.     { 
  9.         write-host "OS:Windows XP"
  10.     } 
  11.     elseif ($OS_Version -eq "5.2.3790") 
  12.     { 
  13.         write-host "OS:Windows 2003"
  14.     } 
  15.  
  16. elseif (($OS_Version -eq "5.0.2195") -or ($OS_Version -eq "6.1.7600")) 
  17.     write-host "Computer Name:"$ComputerName 
  18.  
  19.     if ($OS_Version -eq "5.0.2195")  
  20.     { 
  21.         write-host "OS:Windows 2000 Server"
  22.     } 
  23.     elseif ($OS_Version -eq "6.1.7600") 
  24.     { 
  25.         write-host "OS:Windows 7"
  26.     } 
  27.  
  28. else
  29.     write-host "$ComputerName is not supported."
  30.  
  31. "–END OF REPORT–"

在我的计算机上的运行结果:

"switch"语句

基本语法:

 
  
  1. switch (表达式) 
  2.   (表达式) {代码} 
  3.   值 {代码} 
  4.   default {默认执行代码} 
  5. }

例如,我们可以查询"domainRole"的值来判断计算机在当前Active Directory域中担任的角色,试试下面的代码:

 
  
  1. switch ((Get-WmiObject -Class win32_ComputerSystem).domainRole) 
  2.   0 {Write-Host "Standalone Workstation"} 
  3.   1 {Write-Host "Member Workstation"} 
  4.   2 {Write-Host "Standalone Server"} 
  5.   3 {Write-Host "Member Server"} 
  6.   4 {Write-Host "Backup Domain Controller"} 
  7.   5 {Write-Host "Primary Domain Controller"} 
  8.   default {Write-Host "Cannot determine domain role"} 
  9. }

判断语句为表达式的例子:

 
  
  1. switch (100) 
  2.   (99 + 1) {Write-Host "99+1=100"} 
  3.   (1 + 100) {Write-Host "1+100=100"} 
  4.   (50*2) {Write-Host "50*2=100"} 
  5.   (33.333*3) {Write-Host "33.333*3=100"} 
  6. }

运行结果:

这节就说到这里吧,下一节将讲一讲循环语句的使用。

本文出自 “马睿的技术博客” 博客,请务必保留此出处http://marui.blog.51cto.com/1034148/293907