输出

  • 默认输出

    • 默认会在管道后加入Out-Default,根据前一个结果决定如何输出,也就是总会在管道末尾加入 Format-CustomFormat-ListFormat-TableFormat-WideOut-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 *

内置变量

Column1Column2
$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 = '男'


0x400
31 声望1 粉丝

+1s