PowerShell 跨平台快速上手:10分钟装好并写出第一个自动化脚本
【免费下载链接】PowerShellPowerShell for every system!项目地址: https://gitcode.com/GitHub_Trending/po/PowerShell
PowerShell 是微软开源的跨平台命令行工具与脚本语言,一个安装包就能覆盖 Windows、Linux 和 macOS 三大系统。本文带你完成 PowerShell 7 的最快安装流程,并亲手写出第一个能真正跑起来的自动化脚本,全程不超过 10 分钟。
PowerShell 是什么:一个横跨三大平台的命令行外壳
如果你只熟悉 Linux 的 bash,可以把 PowerShell 理解成"带对象管道的 bash"。传统 shell 在命令之间传递的是纯文本,而 PowerShell 传递的是 .NET 对象——你在第一步查到的进程、服务、文件,可以直接作为结构化数据喂给第二步的过滤命令,省去大量文本切割。
它还自带一套叫 cmdlet 的命令集合(命名遵循"动词-名词"规则,比如Get-Process、Stop-Service),语法统一,跨平台行为一致。也就是说,你在 Linux 服务器上练熟的脚本,换到 Windows 上不用改写法。
PowerShell 7 Linux 安装:最快两步走法
以 Debian/Ubuntu 系为例,两步搞定(其他发行版如 RHEL、SUSE 有对应的官方脚本,见 tools/install-powershell.sh):
sudo apt-get update sudo apt-get install -y powershell安装完成后,命令入口是pwsh(注意:不带 s 的旧版入口属于 Windows PowerShell 5.1,两者不要混用)。验证是否装好:
pwsh -c '$PSVersionTable.PSVersion'看到7.x.x开头的版本号就成功了。macOS 用户可以直接装.pkg安装包,或用 Homebrew 执行brew install --cask powershell。
PowerShell 首次运行:验证环境与试一条实用命令
打开 pwsh 后,先跑一条真实有用的命令,感受一下"对象管道"的威力——按内存占用列出前 5 个进程:
Get-Process | Sort-Object WS -Descending | Select-Object -First 5 Name, WS一行命令,输出整齐的对齐表格。传统 bash 写同样的事通常要套ps、sort、awk三个工具。这就是 PowerShell 日常使用中最直观的效率收益:更少的工具拼接、更少的报错排查。
编写你的第一个 PowerShell 自动化脚本
创建check-disk.ps1,写入以下内容:
Get-PSDrive -PSProvider FileSystem | Where-Object Free -gt 1GB | Select-Object Name, @{N='Used%';E={[math]::Round(100-($_.Free/$_.Used*100),1)}}运行方式:
pwsh -File ./check-disk.ps1脚本做的事:遍历所有文件系统驱动器,过滤出剩余空间大于 1GB 的,算出已用百分比。以后把这段贴进定时任务(crontab 或任务计划程序),就是一份每日磁盘健康报告。
写脚本时有两条习惯能帮你少走弯路:
- 命令名严格用"动词-名词",写之前先按 Tab 让 PowerShell 帮你补全
- 输出尽量保持结构化(用
Select-Object挑选字段),方便下游程序直接消费
如果你想自己写一个 cmdlet 级别的扩展模块,仓库里有一份完整图解教程:cmdlet 开发示例,从创建项目到导入运行都有截图对照。
进阶技巧:让输出对接 JSON、CSV 与 REST API
PowerShell 的杀手锏是"结构化数据进出"。三个高频用法,每个一行:
- 输出转 JSON:
Get-Service | ConvertTo-Json -Depth 3 - 读取 CSV:
Import-Csv ./data.csv | Where-Object Status -eq 'Active' - 调 REST 接口:
Invoke-RestMethod -Uri 'https://api.github.com/repos/PowerShell/PowerShell'
最后一条返回的是已经解析好的 .NET 对象,你可以直接Select-Object stargazers_count,不用自己写 JSON 解析代码。对运维和测试同学来说,这条基本能替代大量临时 Python 脚本。
更深入的用法(比如用 PowerShell 搭建 CI 任务)可以参考仓库自带的社区文档:docs/FAQ.md。
PowerShell 新手常见问题
问:装了 pwsh,为什么旧的 PowerShell 脚本跑不了?
Windows PowerShell 5.1 的脚本在大多数情况下可以直接运行,但个别只依赖 Windows 专属模块(如 WMI 旧语法)的脚本需要改用Get-CimInstance写法。报错时先看命令是否依赖了平台专属模块。
问:Linux 上执行 .ps1 提示权限不足?
脚本不是被当作二进制执行的,请始终用pwsh -File ./脚本.ps1的方式运行,不要加chmod +x后直接执行。
问:输出表格太宽被截断了怎么办?
在会话里先执行$host.UI.RawUI.BufferSize = New-Object psobject @{Width=200; Height=50},或干脆把结果Format-List展开查看。
问:PowerShell 7 和 5.1 我该用哪个?
新项目一律用 7:跨平台、迭代活跃。5.1 只存在于 Windows 且已停止功能更新。
现在就开始
回到起点:一个终端,两条安装命令,一个能跑的报告脚本——这就是 PowerShell 跨平台能力的最小验证闭环。想深入源码或参与贡献,把仓库克隆下来:
git clone https://gitcode.com/GitHub_Trending/po/PowerShell【免费下载链接】PowerShellPowerShell for every system!项目地址: https://gitcode.com/GitHub_Trending/po/PowerShell
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考