特点
PS 中所有命令都叫做 cmdlet (读作 commandlet),具有动名词结合的命名形式,比如:Get-Process、Stop-Service
cmdlet 不区分大小写。
PowerShell 为了脚本环境,扩展了 .NET 的类型系统,简称名为 ETS。
理解“剩余参数值”这一概念。
新版好特性
6.2:
- 大写字母缩写 Tab 补全
6.0
Export-CSV第一行不再输出类名
快捷键
| 键 | 作用 |
|---|---|
Esc |
全删 |
Ctrl + Home |
向左全删 |
Ctrl + End |
向右全删 |
语法
@ 运算符的语法
-contains -notcontains -in -notin 集合的包含判断
-is [type]类型判断-as [type]类型转换
按位运算符
-band按位与-bor或-bxor异或-bno取反-shl左移位操作符-shr右移位操作符
加法 + 的特殊作用
- 拼接数组
- 拼接字符串
乘法 * 的特殊作用
- 重复字符串
- 重复数组
@() 产生空数组
@{} 产生空对象
流程
foreach 循环
foreach ($item in $list){$item*$item}
获取命令信息
Get-Command 缩写 gcm,参数 -Verb 确定动词。
成员信息
Get-Member 缩写 gm,可利用管道传参。
扩展类型系统
PSObject
PSMemberInfo
构造方法
在 C# 中:
- 用 PSObject 类的构造函数对任意对象装箱
- PSObjec 无参构造函数
PSObject.AsPSObject(...)方法,智能转换
在 PS 中:
New-Object PSObject ...[PSObject]::AsPSObject(...)智能转换函数
输出控制
详见 MS文档
Format-Wide
单属性(默认选名称作为属性)两栏列出。
-Column调整输出的列数
实例:
gps|fw
Format-List
Format-Hex
很实用的十六进制模式输出!
实例:
cat hex_file|Format-Hex|more
Format-Table
-Wrap-GroupBy
字符串
查
与数组之间的转换
-join "|" -split "|"
格式化
"{0}; {1:yyyy-MM-dd};HEX: {2:X4}" -f "J.Fan", $(get-date), 7654321
管道操作
Select-String
开发自定义 cmdlet
cmdlet 类要点:
- 继承
PSCmdlet - 使用命令名标识符
[Cmdlet("verb","noun")] - 使用参数标识符
[Parameter]
参数的配置
在 [Parameter(...)] 里设置:
- 强制参数
Mandatory=true - 位置
Position=123 - 参数集合
- 默认参数集合
