主要观点:PowerShell 是微软的交互式外壳和脚本语言,面向对象,有 Windows PowerShell(5.1)和 PowerShell(7.x)两种产品,可在多种操作系统上使用,对象处理能力强,能进行多种文件系统操作和严肃脚本编写,可使用.NET 类,有一些 Windows 相关技巧,能启动子进程与其他命令交互,有个人偏好的配置脚本,也有一些不寻常和易混淆的部分及最丑的单元素数组处理。
关键信息:
- Windows PowerShell 是 Windows 内置组件,基于.NET Framework 4.x,图标为蓝色;PowerShell(7.x)原名 PowerShell Core,是独立应用,基于.NET(原.NET Core),图标为黑色,Windows PowerShell 开发在 PowerShell(Core)出现后停止。
- PowerShell 中
dir
命令返回对象数组,可通过Get-ChildItem
等命令进行文件系统操作,如获取特定文件的总大小等。 - 可编写脚本生成软件物料清单(SBOM),处理
.csproj
和package.json
文件获取包和版本信息。 - PowerShell 基于.NET,可访问.NET 标准库,能加载.NET DLL 并使用其中的类,如
System.Collections.Generic.HashSet
。 - 可利用 COM 控制 Internet Explorer,PowerShell 还能进行各种 Windows 管理任务,如获取磁盘空间剩余百分比。
- PowerShell 可启动子进程,与非 PowerShell 命令交互,有多种内容检查运算符。
- 有个人的 profile 脚本用于添加一些 Unix 习惯行为和 Tab 完成功能。
重要细节: - 安装现代 PowerShell 的链接:Windows,Linux,macOS。
- 在处理单元素数组时,
(Get-ChildItem).Length
在只有一个文件时返回文件大小,有零个文件时返回$null
,需用@(Get-ChildItem).Length
确保返回数组。 - 在处理包含空格的路径时,需使用调用运算符
&
,PowerShell 的 tab 完成会根据需要添加&
。 - 函数调用有两种语法,调用函数/cmdlet 可使用 shell 风格语法,调用方法使用更传统语法,名称在两种情况下都不区分大小写。
- 逃逸字符是反引号,反斜杠是 Windows 路径分隔符。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。