powershell语法基础

date: 2024/6/21

变量

无须预定义,$+str直接使用自动声明

# 赋值
$a="12"
$b=123
Set-Variable var 100
# 获取值
Get-Variable var或者Get-Variable var*来获取多个变量
Clear-Variable var #清空变量
Remove-Variable var #删除变量
# 字符串拼接
$c=$a+"32"+$c
# 变量的方法
$date = Get-Date  #获取当前时间
$date.AddDays(3)  #当前时间加三天
# 强制指定变量类型
[int] $b = 5 #类型不匹配就报错
Set-Variable -name intDriveType -value 3 -option constant  #常量定义 常量:intDriveType 值:3
# 数组
$arr=@()#空数组
$arr=1,2,3#$arr[0]打印第一个
foreach ($i in $arr){}#数组遍历
$var=1..6 #定义数组

运算符

+-*/%,+=,-=等

!,-not非,-and与,-or或

-eq等于,-ne不等于,-gt大雨,-ge大于等于,-lt小于,-le小于等于,-contains包含 #1,2,3,5,3,2 –contains 3

&:用于执行字符串或脚本块中的命令或脚本。它的主要功能是动态执行命令,可以在运行时决定要执行的命令或脚本。这在需要根据条件或输入动态选择要运行的命令时非常有用。

# 执行命令字符串
$command = "Get-Date"
& $command
# 执行带参数的命令
$command = "Get-ChildItem"
$path = "C:\Windows"
& $command $path
# 执行脚本文件
$scriptPath = "C:\path\to\script.ps1"
& $scriptPath
# 执行脚本块
$scriptBlock = { Get-Process }
& $scriptBlock

. 可用于方法调用,$a.Substring(0,3)

:: 用于静态方法调用 [DateTime]::IsLeapYear(2008)

字符串运算符:+连接字符串,*重复字符串,-f设置格式,-replace替换,-match正则匹配,-like通配符匹配

-as类型转换:1 -as [string]。-is类型鉴别:$a -is [int]

WindowsPowershell命令解析顺序:别名,函数,cmdlet,脚本,可执行文件,正常文件

函数

函数内可以访问函数外的变量,修改不影响外部的值,要想在函数中改变外部变量值,需要使用

$var1=10
function two{$Script:var1=20;}
function Add-Numbers {
    param (
        [int]$Number1,
        [int]$Number2
    )
    $Sum = $Number1 + $Number2
    Write-Output "The sum of $Number1 and $Number2 is $Sum"
    return $Sum
}
# 调用函数并传递参数
$Res=Add-Numbers -Number1 5 -Number2 10

条件控制

foreach($i in $var){}
while($n -le 5){}
do{}while($n -le 5)
do{}until()#满足条件停止操作
if(){}elseif(){}else{}
switch [-regex | -wildcard | -exact] [-casesensitive](表达式)| -file filename
{
1{}
2{}
}
break continue
throw "danger" #抛出异常
get-childitem ada -ErrorAction stop  #此处有错误 路径ada不存在

调试

set-psDebug -step设置为单步调试

set-psDebug -off设置为非调试