Powershell进阶语(三)中哪些高级技巧和命令用法最实用?
摘要:目录PowerShell 管道管道输出控制管道输出的格式设置Format-ListFormat-TableFormat-Wide管道选择、排序和度量对象排序和分组Sort-ObjectFormat 的 GroupBy分组度量管道中的对象Se
目录PowerShell 管道管道输出控制管道输出的格式设置Format-ListFormat-TableFormat-Wide管道选择、排序和度量对象排序和分组Sort-ObjectFormat 的 GroupBy分组度量管道中的对象Select-ObjectUnique去重Property自定义属性并设置表达式与格式计算从管道中筛选对象比较运算符基本筛选器语法高级筛选器语法组合多个条件True 或 False 的属性筛选使用技巧高级筛选不受简单筛选限制优化筛选器性能枚举枚举管道对象语法写入到文件转换为其他形式的数据表示形式CsvXMLJsonHTML其他输出选项传递管道对象ByValue 传递数据ByPropertyName 传递数据展开属性值深入了解Powershell脚本开发生命周期与安全强化PowerShellGet 模块执行策略以数字方式对脚本进行签名进阶语法ForEach 循环If 构造Switch 构造For 构造其他循环构造Do..WhileDo..UntilWhileBreak 和 Continue导入数据Get-ContentImport-CsvImport-ClixmlConvertFrom-JsonInvoke-RestMethod接受用户输入Read-HostCredential凭证使用Get-CredentialExport-Clixml脚本故障排除与错误处理输出命令的层次与用途脚本中使用断点根据行进行断点根据命令进行断点根据特定变量进行断点错误操作$ErrorActionPreference-ErrorAction函数与模块变量范围Set-Variable指定作用域类似指针修改return创建模块
PowerShell 管道
管道输出
PowerShell 命令不会生成文本作为输出,而是会生成对象,对象是描述内存中数据结构的通用词。
运行 Get-Service 命令时,它会返回服务对象的集合,每个对象都包含 Name、DisplayName 和 Status 等名称的属性。
控制管道输出的格式设置
格式设置 cmdlet 为:
Format-List
Format-Table
Format-Wide
Format-Custom
Format-Custom cmdlet 需要创建定义格式的自定义 XML 配置文件。 该 cmdlet 不经常使用。
Format-List
Format-List cmdlet 将命令的输出格式化为一个简单的属性列表,其中每个属性显示在一个新行上。
如果将输出传递给 Format-List 的命令返回多个对象,则会为每个对象显示单独属性列表。
当命令返回大量很难以表格格式查看的属性时,列表格式尤其有用。
Format-List cmdlet 的别名是 fl。
Format-Table
Format-Table cmdlet 将输出格式化为表格,其中每一行表示一个对象,每一列表示一个属性。
这个输出的效果和默认的没啥效果,多了一个就是你可以选择参数来进行定义你输出的效果,下面介绍参数↓↓↓
可使用多种参数修改此格式,例如:
-AutoSize。 此参数可根据数据的宽度来调整列的大小和数量。 在 Windows PowerShell 5.0 及更高版本中,-AutoSize 默认设置为 true。 在更低版本的 Windows PowerShell 中,默认值可能会截断表中的数据。
-HideTableHeaders。 此参数会从输出中移除表标头。
-Wrap。 此参数会使超出列宽的文本换行到下一行。
Format-Table cmdlet 的别名是 ft。
Format-Wide
Format-Wide cmdlet 的输出是单个列表中分多列显示的单个属性。
这个其实只需要知道:使用 -Property 参数,指定一个属性去进行多个列展示,不用单个列展示这么难看
下面展示的就是服务的所有名字,但是我们是用3列进行展示
Get-Service | fw -Property Name -Column 3
管道选择、排序和度量对象
排序和分组
Sort-Object
Sort-Object 命令接受一个或多个属性名作为排序依据,默认情况下,命令按升序排序
Get-Service | Sort-Object –Property Name –Descending
Get-Service | Sort Name –Desc
Get-Service | Sort Status,Name
默认情况下,字符串属性的排序不考虑大小写。
