PowerShell随笔2_分支 选择 循环

PowerShell特殊变量:

PowerShell的特殊变量由系统自动创建。用户自定义的变量名称应该不和特殊变量相同。

$^ :前一命令行的第一个标记

$$ :前一命令行的最后一个标记

$_ :表示表示当前循环的迭代变量。

$? :前一命令执行状态,成功(Ture) 或者 失败(False)

$Args :为脚本或者函数指定的参数

$Error :错误发生时,错误对象存储于变量 $Error 中

$Foreach :引用foreach循环中的枚举器

$Home :用户的主目录

$Host :引用宿主 POWERSHELL 语言的应用程序

$Input :通过管道传递给脚本的对象的枚举器

$LastExitCode :上一程序或脚本的退出代码

$Matches : 使用 –match 运算符找到的匹配项的哈希表

$PSHome :Windows PowerShell 的安装位置

$profile :标准配置文件(可能不存在)

$StackTrace : Windows PowerShell 捕获的上一异常

$Switch :switch 语句中的枚举器

============================================================

此数组中是否包含3:          
1,2,3,5,3,2 –contains 3

返回所有等于3的元素:        1,2,3,5,3,2 –eq 3

返回所有小于3的元素:        
1,2,3,5,3,2 –lt 3

测试 2
是否存在于集合中:   if (1, 3, 5 –contains 2)

============================================================

5.调用运算符


可用于调用脚本块或者命令/函数的名称

用法如下:

$a = { Get-Process | Select -First 2}  #获取处理器信息排名前二的两条记录

&$a


可用于方法调用

用法如下:

$a = "这是字符串"

$a.substring(0,3)

::  用于静态方法调用

用法如下:

[DateTime]::IsLeapYear(2008)

结果:True

[DateTime]::Now  #返回当前时间

6.字符串运算符


连接两个字符串

*   按指定次数重复字符串

-f   设置字符串格式

-replace  
替换运算符    用法:"abcd"
-replace "bc","TEST"   返回结果:aTESTd

-match   正则表达式匹配

-like       通配符匹配

7.其他运算符

, 数组构造函数

..  范围运算符

-is  类型鉴别器  用法: $a =
100  $a -is [int]  返回结果:Ture  $a -is [string]
返回结果:False

-as   类型转换器  用法: 1 -as [string]  
#将1作为字符串处理

-band  二进制与

-bor     二进制或

-bnot    二进制非

=====================================================================

一如下:(函数中改变变量值并不影响实际值)

$var1=10
              
function one{"The Variable is
$var1"}
              
function
two{$var1=20;one}
               one
              
two
               one

执行结果:

The Variable is
10
             
The Variable is
20
             
The Variable is 10

用法二如下:(函数中变量值的改变要用$Script:var的形式)

$var1=10
               
function one{"The Variable is
$var1"}
                function
two{$Script:var1=20;one}
               
one
                two
                one

执行结果:

The Variable is
10
              
The Variable is
20
              
The Variable is 20

PowerShell条件控制的用法:

一、循环类

1.foreach的用法

用法一如下:

$var=1..6 #定义数组

foreach($i in
$var)
           
{
                    
$n++
                    
Write-Host
"$i"
             }
           
Write-Host "there were $n record"

执行结果:

1
           
2
           
3
           
4
           
5
           
6
            there
were 6 records

用法二如下:直接获取管道数据

$n =
0
            "a","b","c","d" |
foreach{
                   
$n++
                   
Write-Host
$_
                    }
           
Write-Host "there were $n record"

执行结果:

a

b

c

d

there were 4 records

2.while的用法

用法一如下:
           
$n = 0
           
while($n -le 5)    #当$n小于等于5时进行下面操作
           
{
                 
write-host
$n
                 
$n++
            }

执行结果:

0

1
           
2
           
3
           
4
            5

3.
do...while的用法

用法一如下:
           
$n = 0
           
do
           
{
                 
write-host
$n
                 
$n++
           
}
            while($n
-ne 3)    #当$n<>3时进行循环操作

执行结果:

0

1
            2

4.
do...until的用法

用法一如下:
            $n
= 0
           
do
           
{
                 
write-host
$n
                 
$n++
           
}
            until($n
-gt 3)    #当$n>3时停止操作

执行结果:

0

1
           2

3

二、分支类

1.if用法

  
if语法结构如下:

              if(条件1)

{处理1}

elseif(条件2)

{处理2}

...elseif
可多次重复

else

{处理3}

用法如下:

Get-Service
|foreach{  #foreach{必须放在一起,不可换行放置
                    
 if($_.status -eq "running"){   #if(){
必须放在一起,不可换行放置
                                 
write-host $_.displayname "("$_status")" -foregroundcolor
"green"
                      
 }
                    
else
                   
 {
                               
 write-host $_.displayname "("$_status")" -foregroundcolor
"red"
                   
 }
           
}

执行结果:

Windows Audio Endpoint Builder (
)
            
Windows Audio ( )
             ActiveX
Installer (AxInstSV) (
)
            
BitLocker Drive Encryption Service ( )
            
Base Filtering Engine ( )

2.switch用法

  
switch语法结构如下:

switch [-regex | -wildcard | -exact] [-casesensitive](表达式)| -file
filename   #表达式可以为数组,为数组时顺序处理数组每一项

#
-file表示从文本获得输入,读取文本每一行,并对其执行switch块

{

字符1|数字1|变量1|表达式1

{处理1}     #此处可加上;break 表示若匹配上则跳出switch语句

字符2|数字2|变量2|表达式2

{处理2}

...以上的组合可有多个,不可重复

default   #默认处理方式,这个是防止匹配不上时的处理方式,类似错误处理。且default语句只可有一个

{处理3}

}

用法一如下: switch(表达式)

$a =
3
                     switch($a)
                    
{
                             
1
                           
  {"It‘s one";break}   #break:表示若匹配跳出swith语句
                             
2
                         
    {"It‘s
two";break}
                           
 
3
                          
   {"It‘s
three";break}
                               4
                            
 {"It‘s
four";break}
                            
 
5
                          
    {"It‘s
five";break}
                              
default
                               
{"It‘s
unknown";break}
                      }

执行结果:

             
It‘s three


$a = 8  执行结果为:It‘s unknown

用法二如下:switch -casesensitive
(表达式)表示区分大小写

             $day
=
"day1"
             switch
-casesensitive($day)  #
-casesensitive
表示大小写敏感,即区分大小写
             {
                   
day1
                  
 {"It‘s Monday"
;break}
                   
day2
                    {"It‘s
Tuesday";break}
                   
day3
                 
  {"It‘s
Wednesday";break}
                   
day4
                  
 {"It‘s
Thursday";break}
                   
day5
                 
  {"It‘s
Friday";break}
                  
 day6
                   
{"It‘s
Saturday";break}
                  
 day7
                 
  {"It‘s
Sunday";break}
               
   
default
                
  {"It‘s
unknown";break}
             
}

执行结果: It‘s Monday

若定义  $day = "Day1"  执行结果:It‘s unknown

用法三如下:switch -regex(表达式)表示正则表达式匹配

$day =
"day5"
      switch -regex
($day)
     
{
          
^[a-z]+$ 
          
{"字母,匹配为:" +$_
;break}
          
^[\d]+$ 
          
{"数字,匹配为:" +$_
;break}
          
^\w+$ 
          
{"字母+数字,匹配为:" +$_
;break}
          
default
           {"什么都不是"
+$_;break}
      }

执行结果:字母+数字,匹配为:day6

若 $day = "day" 执行结果为:字母,匹配为:day6

若 $day = "1234" 执行结果为:数字,匹配为:1234

若 $day = 12 执行结果为:数字,匹配为:123

若 $day = "*&^%" 执行结果为:什么都不是,匹配为:*&^%

用法四如下:switch -regex(表达式)表示正则表达式匹配
表达式可为数组

$day
= "day5","day6"
       switch -regex
($day)
       {
             
^[a-z]+$ 
             
{"字母,匹配为:" +$_
;}
             
^[\d]+$ 
             
{"数字,匹配为:" +$_
;}
             
^\w+$ 
              {"字母+数字,匹配为:"
+$_
;}
             
default
             
{"什么都不是" +$_;}
       }

执行结果:字母+数字,匹配为:day5

字母+数字,匹配为:day6

用法五如下:switch -wildcard (表达式)表示通配符匹配

$day =
"day2"
           
switch -wildcard
($day)
           
{
                
day2 
                
{"day2,匹配为:" +
$_;break}
                 
day3
                
{"day3,匹配为:" +
$_;break}
                
day* 
                
{"通配符,匹配为:" +
$_;break}
                
default
               
 {"什么都不是:"
+$_;break}
           
}

执行结果:day2,匹配为:day2

若 $day = "day5",执行结果为:通配符,匹配为:day5


$day = "sunshine",执行结果为:什么都不是:sunshine

三、跳转类

1.break用法:break语句出现在foreach、for、while、switch等结构中时,break语句将使windows
powershell立即退出整个循环。

在不循环的switch结构中,powershell将退出switch代码块。

用法如下:

$var
= 0
            
while ($var -lt
10)
            
{
                   
$var +=
1
                  
 if($var -eq
5)
                  
 {
                         
break       #当var=5时,终止while循环

}
                   
write-host
$var
              }

执行结果:

1
             
2
             
3
              4

2.continue用法:continue语句出现在foreach、for、while等循环结构中时,continue语句将使windows
powershell立即退出某一次轮循环,并继续下一轮循环。

用法如下:

$var =
0
          while ($var -lt
10)
         
{
               
$var +=
1
              
 if($var -eq
5)
              
 {
                       
continue      
#当var=5时,跳出本轮循环,继续下一轮循环
                }
              
write-host $var
         }

执行结果:

1
           
2
           
3
           
4
           
6
           
7
           
8
           
9
            10

PowerShell抛出异常的Throw用法:

用法如下:

                  
Throw  字符串|异常|ErrorRecord

如:throw 
"danger"

返回结果:danger 及详细错误信息

PowerShell获取出错信息的用法:

用法如下:
            function
one
          
{
                
get-process -ea stop  #-ea定义错误发生以后该如何继续执行,意同-ErrorAction
                
get-childitem ada -ErrorAction stop  #此处有错误
路径ada不存在
                
get-process -ErrorAction
stop
           }

one

返回结果:报出错误信息

PowerShell单步调试的用法:

用法如下:

#单步调试 首先设置调试可用 set-psDebug -step ;若要设置为非调试状态 可用
set-psDebug
-off
          
for($i = 1;$i -le 10 ;
$i++)
          
{
                  
 write-host "loop number
$i"
           }

执行结果:会出现逐步调试的对话框

from:http://lovetaomin18.blog.163.com/blog/static/18086849620125553711920/

时间: 2024-10-13 19:47:15

PowerShell随笔2_分支 选择 循环的相关文章

Mybatis的分支选择和In循环

Mybatis的分支选择: <choose> <when test="patientNo != null and patientNo != ''"> and ipi.patient_no = #{patientNo} </when> <otherwise> <if test="patientName != null and patientName != ''"> and ipi.patient_name l

Python日志之Python控制流(顺序,分支,循环)

Python控制流: 所有程序都是在IDLE中运行 1.Python的三种控制流 (1).什么是控制流 Python中程序代码执行是有序的,有的代码程序会从上倒下按顺序执行,有的程序会跳转着执行,有的程序代码会选择不同的分支去执行,有的程序代码会循环的去执行.那么到底什么样的程序会自上而下执行,哪些会选择分支执行,什么样的可以循环执行呢?在Python中是有相应的控制语句进行标识的,控制语句他能控制某些代码段的执行方式,我们把这些不同功能的控制语句称为控制流 (2).Python里面有哪些控制流

python顺序选择循环使用

格式化输出 顺序选择循环结构 简单使用 查看某个模块.内置函数或者某个对象使用帮助help([module|object.ways]) 格式化输出 将代码按照指定格式输出:%对字符串进行格式化,\用来做转义 格式符:%c:显示字符的ASCII码%d,%i:显示十进制整数%e:科学计数法数值显示%f:浮点数%s:字符串%%:显示%修饰符:#[.#]:第一个#数字控制显示的宽度,第二个表示小数点的精度-:左对齐+:显示数值的符号 顺序选择循环结构:格式强要求! 分支结构,单分支.双分支,多分支: i

(一)Python入门-4控制语句:02单分支选择结构-条件表达式详解

一:选择结构介绍 选择结构通过判断条件是否成立,来决定执行哪个分支.选择结构有多种形式,分为:单分 支.双分支.多分支.流程图如下: 二:单分支选择结构 if语句单分支结构的语法形式如下: if 条件表达式: 语句/语句块 其中:1条件表达式:可以是逻辑表达式.关系表达式.算术表达式等. 2语句/语句块:可以是一条语句,也可以是多条语句.多条语句,缩进必须对齐一致. 三:条件表达式详解 在选择和循环结构中,条件表达式的值为 False的情况如下: False.0.0.0.空值 None.空序列对

python分支和循环结构

本文收录在Python从入门到精通系列文章系列 1. 分支结构 1.1 应用场景 迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构.然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分,那么在完成本局游戏后,我们要根据玩家得到分数来决定究竟是进入第二关,还是告诉玩家“Game Over”,这里就会产生两个分支,而且这两个分支只有一个会被执行.类似的场景还有很多,我们将这种结构称之为“分支结构”或“选择结构”

java分支与循环

一.基础数据类型(四类八种):不能为null整数型byte----2的8次方short----2的16次方int----2的32次方long----2的64次方浮点型float----4个double---8个字节布尔型boolean(true, false)字符型char(可以是一个字母, 也可以是一个汉字) int a = 5;全部存到栈引用类型:String s = "abc";所有的类所有的数组所有的接口 二.分支if(表达式_布尔值) {...} if(表达式_布尔值) {.

【.net 深呼吸】细说CodeDom(8):分支与循环

有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具的朋友会知道,你用while语句写了一段代码,然后编译生成程序集,再用工具把代码“反”出来,此时你会发现,你原来写的是while语句,但出来的是for语句,道理是一样的,“反编译”工具只关心代码的执行逻辑,而不是语法.所以,你自然无法用 CodeDom 来生成var关键字来声明变量,也无法生成用 L

PHP 分支与循环

一.概述: 上面一章我们讲解了PHP当中的运算符和表达式,通过上面的知识点我们就可以完成一些基本的运算操作了.但是涉及到一些比较复杂的逻辑,分支与循环就必不可少了.通过分支和循环的结合使用可以使业务更加复杂,代码功能更加强大. 二. 常见的分支结构 if语句 1 单个 if 语句 基本格式: if(条件表达式){ 语句组; //语句组为单条语句时可省略"{ }". } 当条件表达式的值为真(true)时,PHP将执行语句组,相反条件表达式的值为假(false)时,PHP将不执行语句组,

正则表达式-python-无捕获分组与分支选择

无捕获分组 当你要将一部分规则作为一个整体对它进行某些操作,比如指定其重复次数时,你需要将这部分规则用 (?:) 把它包围起来. 分支条件 在正则表达式中,分支条件是一个很常用的条件. 满足条件A 或者 满足条件B  ,这个时候我们就可以使用分支条件了. 分支条件使用的符号为 | 代码示例: 我们突然发现,它把字符串分割成两个部分了 I have a dog  和  cat    而不是    I have a dog  和   I have a cat 如果我们只要区分dog和cat呢?正则要