输出
默认输出
- 默认会在管道后加入
Out-Default
,根据前一个结果决定如何输出,也就是总会在管道末尾加入Format-Custom
、Format-List
、Format-Table
、Format-Wide
和Out-Host
- 例如
ls
等于ls | Format-Table | Out-Host
- 默认会在管道后加入
其他输出方式
Get-Command -Verb out
查看其他输出方式
不显示输出
Out-Null
或>$null
,例如创建文件夹等命令不需要输出结果md ABC >$null
排序、筛选
排序
ls | Sort-Object Length -Descending
按 Length 降序
筛选属性
ls | Select-Object Name,Length
只显示 Name 和 Length- 如果命令有
-Properties
参数也有类似功能,但实际功能还需注意说明,例如Get-ADUser
的这个参数是指定显示扩展属性中的某些项目。
筛选对象
ls | Select-Object -First 2
,只显示前 2 个结果ls | Where-Object {$_.Length -gt 500}
显示大于 500b 的文件- 如果命令有
-Filter
参数也能筛选,不同的命令筛选功能各有不同,使用此参数效率更高
变量
- 交换变量值
$a,$b = $b,$a
声明变量时指定类型,系统会自动将获取到的字符串转换为指定类型
- 例如
[XML]$xml=(Get-Content .LogoTestConfig.xml)
,然后就能用$xml.
的形式来访问文件内的节点了。 - 例如
[DateTime]$date="2012-12-20 12:45:00"
,然后$date
能直接调用DateTime
的所有方法。
- 例如
任何对象都可以使用
Format-List *
查看它所有的属性和方法- 例如
Get-WmiObject Win32_ComputerSystem | fl *
- 例如
内置变量
Column1 | Column2 |
---|---|
$env | 系统环境变量 |
$PSScriptRoot | 脚本所在目录 |
别名
- 根据完整名
Get-Alias -Definition '*smbshare*'
- 根据别名
Get-Alias [-Name] 'Get-Alias'
多行文本
$text =@"
xxxxx
"@
多行注释
<#
xxxxx
#>
异常处理
设置异常后程序如何处理 $ErrorActionPreference = 'stop'
执行策略
https://docs.microsoft.com/zh...
重定向
Tee-Object
可同时输出和保存到文件。例如ls | Tee-Object ls.txt
- 将命令的结果赋给变量,变量会将结果按行存为数组
... | Format-List *
查看任意对象的所有属性和方法
数组
$num = 1,2,3,4,5
$num = 1..5
- 空数组
$a = @()
- 一个元素的数组
$a = ,1
- 判断是否为数组
$a -is [array]
- 选择特定元素
$a[0,4,5]
- 添加元素
$a+=1
- 删除第3个元素,
$a[0..2]+$a[3]
哈希表
创建哈希表$a = @{}
$a = @{ Age=1;Name='Jone'}
插入$a.Sex = '男'
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。