PowerShell脚本实践指南

在软件开发、系统运维和DevOps 等领域,有一个永远存在的问题:大量重复性的工作正在消耗工程师的时间。每天登录服务器、检查日志、修改配置、部署应用、整理数据、生成报告……这些事情单次并不复杂,但重复几十次、几百次之后,就变成了巨大的时间成本。PowerShell(pwsh)就是解决这类问题的工具之一。它不仅是一门脚本语言,更是一套现代化自动化平台。本文将从基础语法开始,一直到脚本工程实践,全面介绍如何使用 pwsh 构建可靠、高效的自动化工具。
什么是PowerShell?
PowerShell最初由微软设计,用于Windows系统管理。后来发展为跨平台自动化工具,Linux/MacOS等系统现在也支持PowerShell。现代PowerShell启动可以使用pwsh,因此很多人把新版本PowerShell简称为pwsh。
查看版本:
|
|

为什么选择PowerShell?
传统脚本依赖文本处理:
|
|
而pwsh处理的是对象。例如:

拿到的是一个完整的对象。这意味着我们不用正则解析、字符串切割、手动提取字段。其次,pwsh具有丰富的系统API,可以直接访问文件系统、注册表、网络、服务、进程等资源。
PowerShell基础语法
PowerShell的设计目标不是替代CMD,而是提供一种面向对象的自动化语言。它的最大特点:
重要
命令输出的是对象,而不是文本。
命令结构
PowerShell的命令通常叫做Cmdlet。格式:
|
|
例如:
|
|
Get表示动作,Process对象。常见的动词有:
| 动词 | 含义 |
|---|---|
| Get | 获取 |
| Set | 设置 |
| New | 创建 |
| Remove | 删除 |
| Start | 启动 |
| Stop | 停止 |
| Test | 测试 |
| Convert | 转换 |
| Export | 导出 |
例如:
|
|
查看帮助
PowerShell内置帮助:
|
|
查看所有命令:
|
|
查找:
|
|
变量
PowerShell变量以$开头。
创建:
|
|
使用:
|
|

数据类型
PowerShell支持自动类型推断。

我们也可以指定类型:
|
|
字符串
需要注意的是,双引号字符串会解析变量,而单引号字符串原样输出。

用+可对字符串进行拼接:
|
|
字符串包含一系列方法,例如:
|
|
数组
创建:
|
|
访问:
|
|
查看长度:
|
|
遍历:
|
|
哈希表(字典)
创建:
|
|
读取:
|
|
添加键值对:
|
|
对象
如果需要创建对象:
|
|
访问:
|
|
管道
经典命令:
|
|
过滤出正在运行的服务:
|
|
我们只想要输出对象的Name和Status属性:
|
|
将结果导出到文件中:
|
|
几个命令就完成了查询 → 筛选 → 转换 → 导出。
条件控制
if
|
|
比较符:
| 符号 | 含义 |
|---|---|
| -eq | 等于 |
| -ne | 不等 |
| -gt | 大于 |
| -lt | 小于 |
| -ge | 大于等于 |
| -le | 小于等于 |
switch
类似其他编程语言:
|
|
循环
foreach
|
|
for
|
|
while
|
|
函数
新建hello.ps1脚本,添加如下内容:
|
|
pwsh在hello.ps1所在目录输入:
|
|
重要
前面有一个点,叫点源加载。作用是把ps1中函数加载到当前环境。
之后就可以像其他命令一样正常使用SayHello:
|
|
脚本参数化
我们写脚本的使用,尽量让其参数化,脚本更具灵活性。
|
|
执行:
|
|
错误处理
|
|
日志系统
实现一个简单的日志输出函数:
|
|
使用:
|
|

文件自动化
遍历:
|
|
批量删除:
|
|
移动:
|
|
更多关于文件的操作可阅读用PowerShell玩转文件处理。
网络自动化
测试连接:
|
|
发送HTTP请求:
|
|
示例
让我们创建一个用于判断文件内容是否一样的脚本FileHashTools.ps1:
|
|
总结
PowerShell不只是Windows命令行。它是一套自动化语言、系统管理工具。从简单的Get-Process到复杂的自动化脚本需要逐步积累。当你开始用脚本解决重复问题时,你就进入了真正的自动化时代。
推荐
PowerShell: 600+免费脚本供我们使用学习。
相关内容
支付宝
微信