PowerShell 语法

Posted kernel001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PowerShell 语法相关的知识,希望对你有一定的参考价值。


  •   PowerShell 之 教程

PowerShell 中变量、函数命名等不区分大小写,但字符串区分大小写

powershell 脚本文件 扩展名为 .ps1
调用操作符 & + Cmd
Cmd 只能有1个

PowerShell 交互式
1. 执行数学运算
常用的(+ - * / % !)
2. 执行外部命令 或 脚本
3. 别名
可以对 命令、函数起 别名

PowerShell 语法:
注释:
单行注释:
在每行第一字符出现之前 加 #
1. 变量
自定义变量:
声明:
$var = value (自动创建,并初始化)
使用:
$var
$var
其他功能:
1. 给多个变量赋值
$a = $b = $c = 123
2. 交换变量的值
$a = 1
$b=2

                $value1,$value2=$value2,$value1
            3. 查看正在使用的变量
                ls variable:
            4. 验证变量是否存在
                Test-Path variable:变量
            5. 删除变量
                del variable:变量
        使用命令管理变量:
            Clear-Variable
            Get-Variable
            New-Variable
            Remove-Variable
            Set-Variable
    变量作用域:
        $global
            全局变量,在所有的作用域中有效,如果你在脚本或者函数中设置了全局变量,即使脚本和函数都运行结束,这个变量也任然有效。

        $script
            脚本变量,只会在脚本内部有效,包括脚本中的函数,一旦脚本运行结束,这个变量就会被回收。

        $private
            私有变量,只会在当前作用域有效,不能贯穿到其他作用域。

        $local
            默认变量,可以省略修饰符,在当前作用域有效,其它作用域只对它有只读权限。
            
2. 数据变量(内置) 
    数组
        数组内可以存一切的内容, 是弱类型的语言
        
        声明:
            1) 使用逗号
                $数组 = value1,value2,...
                
                如果数组是连续的数: [可正序可反序]
                    $数组=1..9   --- 1,2,3,4,5,6,7,8,9
            2) 使用@符号
                $数组=@(value1,value2,...)
        访问:
            数组索引是从0开始
            
            $var[Index]
            
            Index:
                取值:
                    -Var.Size()   ~   +(Var.Size() - 1 )
                    
                    值为负时:
                        逆向索引
                        
                单个元素:
                    访问Index位置的元素
                多个元素:
                    访问多个索引位置对应的元素,索引之间用','区分
            $var[start..end]
                start: 开始位置
                end: 结束位置
                
                输出从start位置到end位置的元素
                
        添加:
            利用 $变量+=值   添加
        
        强类型数组:
            在数组变量前  加类型名
            [int []] $name=@("A","B")
                
    hash表
        声明(创建):
            $var = @key1="value1";key2="value2";...
            
        哈希表中可存储数组:
            $var = @key1="value1_1,value1_2,...";...
            
        访问key的值:
            $var["key"]
            
3. 管道
4. 对象 
    
    Powershell中处处皆为对象。
    对象就会有属性,方法等之称。
    
    新建对象:
        new-object:
            利用该关键字创建对象,
5. 控制结构
    运算符:
        比较运算符:
            -eq :等于
            -ne :不等于
            -gt :大于
            -ge :大于等于
            -lt :小于
            -le :小于等于
            -contains :包含
            -notcontains :不包含
        求反:
            -not :  非
            !    :  非
        布尔运算:
            -and :和
            -or  :或
            -xor :异或
            -not :逆
    If 条件:
        条件为真才会执行以下语句
        
        1)if(条件)
            执行语句
        
        
        2)if(条件)
            执行语句
        
        Else
        
            执行语句
        
            
        3) if(条件)
            执行语句
        
        ElseIf(条件)
            执行语句
        
    Switch 条件:
        Switch($value)
        
            匹配值1 执行语句
            匹配值2 执行语句
            匹配值3 执行语句
            匹配值4 执行语句
            
            Default 执行语句
        
        
        支持通配符:
            *     所有
        支持正则表达式:    
            -regex($val)
        eg:

            $value=18
            # 使用 Switch 测试取值范围
            switch($value)
            
                $_ -lt 10 "小于10"
                10  "等于10"
                $_  -gt 10 "大于10"
            
            
            #输出
            #大于10
6. 循环结构
    跳出循环关键字:
        break:  跳出循环语句
        continue: 跳出本次循环
        
    for:
        for(;;;)     ---- 和 C 一样
        
            执行语句
        
    foreach:
        foreach (元素  in 集合)
        
            执行语句
        
    while:
        do-while:
            do
                执行语句
            
            while(条件)
        while:
            while(条件)
            
                执行语句
            
    Switch:
        Switch支持集合循环:
        eg:
            $nums = 10..7
            Switch ($nums)
            
                ($_ % 2) -eq 0 "$_ 偶数"
                ($_ % 2) -ne 0 "$_ 奇数"
            
             
            10 偶数
            9 奇数
            8 偶数
            7 奇数
7. 函数
    任意参数:内部变量$args 接受函数调用时接受的参数,$args是一个数组类型。
    命名参数:函数的每一个参数可以分配一个名称,在调用时通过名称指定对应的参数。
    预定义参数:函数在定义参数时可以指定默认值,如果调用时没有专门指定参数的值,就会保持默认值。
    
    声明:
        Function 函数名(参数表args[])  ---- 参数可以写在函数体 ,与 管道写法一致,需要加Param关键字
        
            执行语句
        
    删除:
        del Function:函数名
    
    调用 与 传参:
        函数名  参数名1 参数名2 ...
        
        
    返回值:
        1个:
            return 值
        多个:
            
                value1
                value2
                ...
            
            
            或
            
                value1
                return value2
                ...      ---- 这里后面的不会返回, 因为return 返回后就直接结束函数了。
            
    管道函数:
        顺序模式:  --- 效率低
            将上一个执行结构保留到 $input
            eg:
                PS E:mossfly.com> Function output
                >> 
                >>    $input
                >> 
                
                PS E:mossfly.com> 1,2,3 | output
        流模式:    --- 高效率
            利用begin、process、end 语句块
            Function 函数名
            
                begin
                
                    
                
                process
                
                    
                
                end
                
                    
                
            
8. 错误处理
9. 字符串相关操作:

    Powershell转义字符表
        转义字符    描述
        `n  换行符
        `r  回车符
        `t  制表符
        `a  响铃符
        `b  退格符
        `’  单引号
        `”  双引号
        `0  Null
        “   反引号本身
        
    定义多行文本
        @" 字符串 "@
        
    
    字符串操作符:
        -f 
            格式化字符串
            占位符0,1,2,3,...

        *
            代表一个字符串

            “PsTips.Net” -like “*”
        +
            合并两个字符串

            “Power” + “Shell”

        -replace,-ireplace

            替换字符串,大小写不敏感

            “PsTips.Net” -replace “tip”,”1″

        -creplace

            替换字符串,大小写敏感

            “PsTips.Net” -replace “Tip”,”1″

        -eq, -ieq

            验证是否相等,大小写不敏感

            “Power” -eq “power”

        -ceq

            验证是否相等,大小写敏感

            “Power” -eq “Power”

        -like, -ilike

            验证字符串包含关系,允许模式匹配,大小写不敏感

            “PsTips.Net” -like “p*”

        -clike

            验证字符串包含关系,允许模式匹配,大小写敏感

            “PsTips.Net” – clike “P*”

        -notlike,

        -inotlike

            验证字符串不包含关系,允许模式匹配,大小写不敏感

            “PowerShell” -notlike “PS*”

        -cnotlike

            验证字符串不包含关系,允许模式匹配,大小写敏感

            “PowerShell” -cnotlike “PO*”

        -match,-imatch

            验证模式匹配,大小写不敏感

            “PowerShell” -match “P*”

        -cmatch

            验证模式匹配,大小写敏感

            “Hello” -match “[ao]”

        -notmatch,

        -inotmatch

            验证模式不匹配,大小写不敏感

            “Hello” -notmatch “[ao]”

        -cnotmatch

            验证模式不匹配,大小写敏感

            “Hello” -cnotmatch “[ao]”

以上是关于PowerShell 语法的主要内容,如果未能解决你的问题,请参考以下文章

PowerShell 语法

用于验证 sql 语法错误的 Powershell 脚本

在Python中运行Powershell命令(SyntaxError:无效语法)

powershell基础介绍和运维场景

PowerShell 函数参数语法

@"String"@ 语法在 powershell 中是啥意思