天天看點

【探索PowerShell 】【九】條件控制、邏輯

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)

前者是忽略大小寫,後者則是區分大小寫。

示例:

"MaRui" -eq "marui" <enter>  

                                結果:"True" 

"MaRui" -ieq "MARUI" <enter>  

"MaRui" -ceq "MARUI" <enter>  

                                結果:"False" 

邏輯運算

    •  -and   與

    •  -or   或

    •  -not   非

    •  !   非

條件

if、else、elseif語句

基本文法:

if (條件)  

{代碼}  

elseif (條件)  

else (條件)  

else 

{代碼} 

例如:

$n=10  

if ($n -eq 1)  

{"n=1"}  

elseif ($n -ne 1)  

{"n!=1,and n=$n"} 

<a target="_blank" href="http://blog.51cto.com/attachment/201004/172209181.png"></a>

下面的腳本是用來檢視本機作業系統的,使用了"if"語句。請複制下面的腳本并且儲存為"OS.ps1",用PowerShell運作試試。

$ComputerName = (Get-WmiObject -class win32_computersystem).name 

$OS_Version = (Get-WmiObject -class win32_operatingsystem -computer $ComputerName).version  

if (($OS_Version -eq "5.1.2600") -or ($OS_Version -eq "5.2.3790"))  

{  

    write-host "Computer Name:"$ComputerName  

    if ($OS_Version -eq "5.1.2600")   

    {  

        write-host "OS:Windows XP" 

    }  

    elseif ($OS_Version -eq "5.2.3790")  

        write-host "OS:Windows 2003" 

}  

elseif (($OS_Version -eq "5.0.2195") -or ($OS_Version -eq "6.1.7600"))  

    if ($OS_Version -eq "5.0.2195")   

        write-host "OS:Windows 2000 Server" 

    elseif ($OS_Version -eq "6.1.7600")  

        write-host "OS:Windows 7" 

    write-host "$ComputerName is not supported." 

"–END OF REPORT–" 

在我的計算機上的運作結果:

<a target="_blank" href="http://blog.51cto.com/attachment/201004/181504739.png"></a>

"switch"語句

switch (表達式)  

  (表達式) {代碼}  

  值 {代碼}  

  default {預設執行代碼}  

例如,我們可以查詢"domainRole"的值來判斷計算機在目前Active Directory域中擔任的角色,試試下面的代碼:

switch ((Get-WmiObject -Class win32_ComputerSystem).domainRole)  

  0 {Write-Host "Standalone Workstation"}  

  1 {Write-Host "Member Workstation"}  

  2 {Write-Host "Standalone Server"}  

  3 {Write-Host "Member Server"}  

  4 {Write-Host "Backup Domain Controller"}  

  5 {Write-Host "Primary Domain Controller"}  

  default {Write-Host "Cannot determine domain role"}  

判斷語句為表達式的例子:

switch (100)  

  (99 + 1) {Write-Host "99+1=100"}  

  (1 + 100) {Write-Host "1+100=100"}  

  (50*2) {Write-Host "50*2=100"}  

  (33.333*3) {Write-Host "33.333*3=100"}  

運作結果:

<a target="_blank" href="http://blog.51cto.com/attachment/201004/183750190.png"></a>

這節就說到這裡吧,下一節将講一講循環語句的使用。

     本文轉自melvillo 51CTO部落格,原文連結:http://blog.51cto.com/marui/293907,如需轉載請自行聯系原作者

繼續閱讀