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>
結果:"True"
"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"}
下面的腳本是用來查看本機操作系統的,使用了"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"))
{
write-host "Computer Name:"$ComputerName
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"
}
}
else
{
write-host "$ComputerName is not supported."
}
"–END OF REPORT–"
在我的計算機上的運行結果:
"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"}
}
運行結果:
這節就說到這裡吧,下一節將講一講循環語句的使用。
出處http://marui.blog.51cto.com/1034148/293907