Board logo

标题: [转载教程] 【探索PowerShell 】【九】条件控制、逻辑 [打印本页]

作者: HAT    时间: 2013-8-30 21:25     标题: 【探索PowerShell 】【九】条件控制、逻辑

【探索PowerShell 】【一】初识http://www.bathome.net/thread-26144-1-1.html
【探索PowerShell 】【二】基本操作http://www.bathome.net/thread-26148-1-1.html
【探索PowerShell 】【三】PowerShell下使用Aliaseshttp://www.bathome.net/thread-26149-1-1.html
【探索PowerShell 】【四】PowerShell的对象、格式与参数http://www.bathome.net/thread-26159-1-1.html
【探索PowerShell 】【五】PowerShell基础知识http://www.bathome.net/thread-26162-1-1.html
【探索PowerShell 】【六】脚本基础简要http://www.bathome.net/thread-26163-1-1.html
【探索PowerShell 】【七】变量http://www.bathome.net/thread-26165-1-1.html
【探索PowerShell 】【八】数组、哈希表(附:复制粘贴技巧)http://www.bathome.net/thread-26166-1-1.html
【探索PowerShell 】【九】条件控制、逻辑http://www.bathome.net/thread-26167-1-1.html
【探索PowerShell 】【十】循环语句http://www.bathome.net/thread-26168-1-1.html
【探索PowerShell 】【十一】函数http://www.bathome.net/thread-26174-1-1.html
【探索PowerShell 】【十二】筛选器 - Filtershttp://www.bathome.net/thread-26187-1-1.html
【探索PowerShell 】【十三】WMI对象http://www.bathome.net/thread-26188-1-1.html
【探索PowerShell 】【十四】使用WMI对象的方法http://www.bathome.net/thread-26189-1-1.html
【探索PowerShell 】【十五】引号与转义字符http://www.bathome.net/thread-26190-1-1.html

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)

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

示例:

PS E:\> "MaRui" -eq "marui"
True
PS E:\> "MaRui" -ieq "MARUI"
True
PS E:\> "MaRui" -ceq "MARUI"
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. if (($OS_Version -eq "5.1.2600") -or ($OS_Version -eq "5.2.3790"))
  4. {
  5.     write-host "Computer Name:"$ComputerName
  6.     if ($OS_Version -eq "5.1.2600")
  7.     {
  8.         write-host "OS:Windows XP"
  9.     }
  10.     elseif ($OS_Version -eq "5.2.3790")
  11.     {
  12.         write-host "OS:Windows 2003"
  13.     }
  14. }
  15. elseif (($OS_Version -eq "5.0.2195") -or ($OS_Version -eq "6.1.7600"))
  16. {
  17.     write-host "Computer Name:"$ComputerName
  18.     if ($OS_Version -eq "5.0.2195")
  19.     {
  20.         write-host "OS:Windows 2000 Server"
  21.     }
  22.     elseif ($OS_Version -eq "6.1.7600")
  23.     {
  24.         write-host "OS:Windows 7"
  25.     }
  26. }
  27. else
  28. {
  29.     write-host "$ComputerName is not supported."
  30. }
  31. "–END OF REPORT–"
复制代码
"switch"语句

基本语法:
  1. switch (表达式)
  2. {
  3.   (表达式) {代码}
  4.   值 {代码}
  5.   default {默认执行代码}
  6. }
复制代码
例如,我们可以查询"domainRole"的值来判断计算机在当前Active Directory域中担任的角色,试试下面的代码:
  1. switch ((Get-WmiObject -Class win32_ComputerSystem).domainRole)
  2. {
  3.   0 {Write-Host "Standalone Workstation"}
  4.   1 {Write-Host "Member Workstation"}
  5.   2 {Write-Host "Standalone Server"}
  6.   3 {Write-Host "Member Server"}
  7.   4 {Write-Host "Backup Domain Controller"}
  8.   5 {Write-Host "Primary Domain Controller"}
  9.   default {Write-Host "Cannot determine domain role"}
  10. }
复制代码
判断语句为表达式的例子:
  1. switch (100)
  2. {
  3.   (99 + 1) {Write-Host "99+1=100"}
  4.   (1 + 100) {Write-Host "1+100=100"}
  5.   (50*2) {Write-Host "50*2=100"}
  6.   (33.333*3) {Write-Host "33.333*3=100"}
  7. }
复制代码
这节就说到这里吧,下一节将讲一讲循环语句的使用。

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




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2