欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

探索PowerShell(九) 条件控制、逻辑

程序员文章站 2022-07-04 23:31:36
逻辑判断 先来简单介绍最基本的逻辑判断: • -eq 判断是否等于(equal) • -lt 判断时候小于(less than) • -...
逻辑判断

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

• -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"}
}

运行结果:


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