Windows PowerShell 语言快速参考
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关联数组(哈希表)
$hash = @{ }
创建空哈希表
$h =@{foo=1;bar=2} 创建并初始化哈希表
$hash.key1 = 1 $hash.key1 $hash["key1"]
将 1 赋予键“key1” 返回 key1 的值 返回 key1 的值
布尔值和运算符
TRUE
FALSE
$TRUE
} else (…) { Break # 再次引发异常
} # 不执行 $ErrorActionPreference 设置中 # 指定的任何操作
}
类型操作(脚本)
-is IS 类型(例如,$a -is [int])
-as 转换为类型(例如 1 -as [string] 将 1 作为字符串处理)
Until(脚本)
转义序列
Windows PowerShell 转义字符为倒撇号,即 `。若要 将字符设置为文本格式,请在其前加上 `。若要指定 `,请使用 ``。 特殊转义序列
`0
(空值)
`a
(警报)
`b
(退格)
`f
(换页)
`n
(新行)
`r
(回车)
`t
(制表符)
`v
(垂直引号)
执行顺序 Windows PowerShell 尝试按以下顺序解析命令:别名、函数、 cmdlet、脚本、可执行文件和正常文件。
数组
“a”,“b”,”c”
字符串数组
1,2,3
整数数组
@()
空数组
@(2) 1,(2,3),4
1 个元素的数组 数组包含数组
,”hi”
一个元素的数组
$a[5] $a[2][3]
数组的第六个元素* 数组的第四个或第三个
元素
$a[2..20]
返回从第 3 个元素到第 21 个元 素
• 数组从零开始。
赋值运算符 =, +=, -=, *=, /=, %=
do { … } until (condition)
{
$a = something
if ($a –eq 1) break; }
命令扩展运算符 $( ) $(1,2,3)
$(Get-Alias a*)
返回空值 返回包含 1、2、3 的数组。
返回表达式的计算结果
@(Get-Alias;Get- 执行其中的两条命令,然后在
Process)
数组中返回结果
注释
$_.name
} If/elseif/else(脚本) if (condition) {…} elseif (condition) {…} else {…}
在命令行中,右大括号必须与 elseif 和 else 同行。此限制不适用于 脚本。 调用运算符 & 运算符可用于调用脚本块或命令/函数的名称。 示例: $a = “Get-Process” &$a $a = { Get-Process | Select -First 2 } &$a
For(脚本) [:label] for ([初始值]; [条件]; [迭代值]) {}
示例: for ($i = 0; $i –lt 5; $i++) {Write-Object $i}
Foreach(脚本) [:label] foreach (集合中的标识符) {} Expression | foreach {} Expression | foreach {BEGIN{} PROCESS{} END{}}
throw "Danger, Danger" Danger, Danger 所在行:1 字符:6 + throw <<<< "Danger, Danger" Throw 接受字符串、异常或 ErrorRecord 作为参数。
Trap
Trap [ExceptionType] {
if (…) { continue # 从导致 trap 的脚本语句之后的下一语句继续; # $? 将更新,但不生成任何错误记录
Windows PowerShell 语言快速参考
为不同类型的系统提供的本机支持 Windows PowerShell 对 WMI、XML、ASDI、ADO 和 COM 对象进 行了改编以提供通用语法来访问其属性和方法。 示例
$g = Get-WmiObject Win32_Process $g[0].Name # instead of $g[0].Properties[“Name”]
算术二元运算符
+ቤተ መጻሕፍቲ ባይዱ
加法,串联
-
减法
*
乘法,字符串重复
/
除法
%
模
数组操作 此数组中是否包含 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) 其他运算符:-gt、-le、-ge、-ne
•
脚本作用域中的变量只对该脚本文件中的所有作用域可
见。
•
本地作用域中的变量仅在当前作用域及其子域中可见。
•
私有作用域变量仅对当前作用域可见。
作用域是在外壳程序函数的函数体中创建的(请参阅函数创建)
示例:
$global:a = 4 $script:a = 5 $local:a = 3 $private:a = 6
使用 –match 运算符找到的匹配项的哈
希表
$PSHome
Windows PowerShell 的安装位置
$profile
标准配置文件(可能不存在)
$StackTrace
Windows PowerShell 捕获的上一异常
$Switch
switch 语句中的枚举器
对象属性
使用“.”运算符可以直接引用对象的属性。 $a = Get-Date $a.Date $a.TimeOfDay.Hours 使用“::”运算符可以引用静态属性 [DateTime]::Now
$FALSE
所有长度大于 0 的字符串 (单词“false”除外) 所有不等于 0 的数字 长度大于 1 的数组 长度为 1,其元素为 TRUE 的数组 对所有对象的引用
空字符串或字符串 “false” 所有等于 0 的数字 长度为 0 的数组 长度为 1,其元素为 FALSE 的数组 空值
Break(脚本) break 命令用于退出循环。它可以接收要退出到的可选 LABEL 示例: while (1)
-as
类型转换器
-band
二进制与
-bor
二进制或
-bnot
二进制非
Return(脚本) return 命令用于退出当前脚本或函数并返回值。 示例:
function foo {
return 1
}
Scopes(脚本)
在不同的作用域中可以将变量和其他数据元素实例化:
•
全局作用域中的变量对所有作用域均可见。
$Foreach
引用 foreach 循环中的枚举器
$Home
用户的主目录;通常设置
为 %HOMEDRIVE%\%HOMEPATH%
$Host
引用宿主 POWERSHELL 语言的应用
程序
$Input
通过管道传递给脚本的对象的枚举器
$LastExitCode 上一程序或脚本的退出代码
$Matches
write-object $args[0] }
function test ([string]$label=”default label”,[int]$start=0) { BEGIN {$x=$start} PROCESS {¡?label:$_’; $x++} END{“$x total”} } Filter(脚本) Filter 是编写带有 PROCESS 脚本块的函数的速记方式。 filter MyFilter {
字符串
字符串常量: “这是字符串,此 $variable 可展开为 $(2+2)” ‘这是字符串,此 $variable 不能展开’
@” 这是“here string”,其中可包含任意字符(包括回车和引号)。将 计算表达式 $(2+2)
”@ @’ 带单引号的“here string”不计算表达式。 ‘@
使用“::”运算符可以调用静态方法 [DateTime]::IsLeapYear(2005)
Windows PowerShell 自动变量(未全部列出)
$$
前一命令行的最后一个标记
$?
上一命令的布尔状态
$^
前一命令行的第一个标记
$_
当前管道对象
$Args
为脚本或函数指定的参数
$Error
先前命令中的错误数组
字符串运算符
+
连接两个字符串
*
按特定次数重复字符串
-f
设置字符串格式(.NET 格式说明符)
-replace
-match -like
替换运算符
"abcd" –replace “bc”, “TEST” aTESTd 正则表达式匹配 通配符匹配
Switch(脚本) 在该脚本中可以使用变量 $_。$_ 表示当前正在计算的值。如果在 switch 中使用了数组,则将测试该数组的所有元素。 示例: $var = "word1","word2","word3" switch -regex ($var) { "word1" {"Multi-match Exact " + $_ } "word2" {"Multi-match Exact " + $_ } "w.*2" {"Pattern match Exact " + $_ } default {"Multi-match Default " + $_ } }
逻辑运算符 !、-not、-and、-or
方法调用 可以针对对象调用方法。示例: $a = “这是字符串” $a.ToUpper() $a.SubString(0,3) $a.SubString(0,($a.length/2)) $a.Substring(($a.length/2), ($a.length/3))
输出: Multi-match Exact word1 Multi-match Exact word2 Pattern match Exact word2 Multi-match Default word3
Throw
Throw 为脚本提供的功能等同于 ThrowTerminatingError API 为 cmdlet 提供的功能。
{
$a = something
if ($a –eq 1) (continue)
# 除非 $a 等于 1,否则将不会执行此行。
} # 永远不会执行此行。
Dot Sourcing
Dot sourcing 允许在当前作用域(而不是本地作用域)中运行函数、 脚本块和脚本。示例: . MyFunction
如果 MyFunction 设置了变量,则该变量是针对当前作用域(而不是 该函数的本地作用域)设置的。 $a = {$x = Get-Process | Select –First 2} . $a #在当前作用域中计算脚本块
运算符优先级
在 Windows PowerShell 中,运算符是按照以下优先顺序进行计算 的:() {}、@ $、!、[ ]、.、&、++ --、一元 + -、* / %、二元 + -、 比较运算符、-and –or、|、> >>、=
其他运算符
,
数组构造函数
..
范围运算符
-contains
-is
类型鉴别器
脚本块 命令和表达式可存储于脚本块以供以后执行。 示例:
$block = {Get-Process; $a=1} &$block
脚本 Windows PowerShell 命令可存储于脚本文件中,并可从其中执行。 Windows PowerShell 脚本的文件扩展名为“.ps1”。参数可传递给 脚本,而脚本可返回值。 示例: $sum = MyAdder.ps1 1 2 3
示例: $i = 1,2,3 foreach ($z in $i) {Write-Object $z} Get-Process |foreach {BEGIN{$x=1} PROCESS{$X++} END{“$X Processes”}}
Function(脚本) function MyFunction {
# 这是注释,因为 # 是第一个标记字符 $a = “#这不是注释…” $a = “something” # …但这个 # 号后是注释。 Write-Host Hello#world
比较运算符 -eq -ne -gt –ge -lt –le
等于 不等于 大于,大于或等于 小于,小于或等于
可以在运算符前加上“i”或“c”以指定不区分大小写或区分大小 写的操作(例如,–ceq) Continue(脚本) continue 语句表示继续执行循环的下一次迭代,而不退出循环。示 例: while (1)