PowerShell 是一门功能强大的命令行脚本语言,不仅能交互式运行命令,还能将命令组合成脚本文件,实现复杂自动化任务。
本篇文章将带你逐步掌握 PowerShell 脚本开发的基础技能,包括:
如何创建和运行 .ps1
脚本
如何定义和使用函数
如何进行模块化开发并复用你的脚本逻辑
PowerShell 脚本文件是以 .ps1
为扩展名的纯文本文件,其中包含一组要执行的 PowerShell 命令。
# hello.ps1Write-Output "Hello from PowerShell script!"
可使用任意文本编辑器(推荐 VS Code)创建 .ps1
文件。
Windows 出于安全考虑,默认 不允许执行脚本,你需要设置执行策略。
查看当前策略:
Get-ExecutionPolicy
临时设置为允许本地脚本运行:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
RemoteSigned:运行本地脚本无需签名,但下载的脚本必须由可信发布者签名。
命令行运行:
.\hello.ps1
指定 PowerShell 执行器运行:
powershell.exe -File .\hello.ps1 pwsh.exe -File .\hello.ps1 # PowerShell 7+
右键"使用 PowerShell 运行"(需配合策略设置)
可以在脚本中定义接收外部参数的方式:
param ( [string]$name, [int]$age)Write-Output "你好,$name,你的年龄是 $age 岁。"
运行时传参:
.\greet.ps1 -name "小明" -age 18
还支持默认值和参数验证:
param ( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$City = "北京")
function Say-Hello { Write-Output "Hello from function"}Say-Hello
函数也可以带参数,使用 param
块定义:
function Add-Numbers { param ( [int]$a, [int]$b ) return $a + $b}Add-Numbers -a 3 -b 5 # 输出 8
也可以使用位置参数:
Get-ExecutionPolicy0
PowerShell 函数默认返回所有输出(包括 Write-Output
)。
推荐使用 return
明确返回:
Get-ExecutionPolicy1
函数内部定义的变量默认是局部变量:
Get-ExecutionPolicy2
如果要从外部访问变量,可使用作用域前缀:
Get-ExecutionPolicy3
模块(Module)是多个函数、脚本、资源的集合,用于组织代码、方便复用。
常见模块类型:
脚本模块(.psm1
)
清单模块(.psd1
)
二进制模块(.dll)
使用 Import-Module
导入模块:
Get-ExecutionPolicy4
查看已加载的模块:
Get-ExecutionPolicy5
调用模块中的函数:
Get-ExecutionPolicy6
PowerShell Gallery 是 PowerShell 的官方模块仓库,你可以下载并安装数千个模块。
安装模块示例:
Get-ExecutionPolicy7
更新模块:
Get-ExecutionPolicy8
新建 MyModule.psm1 文件,添加函数:
Get-ExecutionPolicy9
在脚本中导入并调用:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned0
提示:可以将模块文件放入
$env:PSModulePath
中的路径,让系统自动识别。
内容 | 说明 |
---|---|
.ps1 文件 | PowerShell 脚本扩展名,存储命令 |
param | 用于定义脚本/函数参数 |
Set-ExecutionPolicy | 控制脚本是否允许运行 |
函数 | 封装复用代码,提高结构清晰度 |
模块(.psm1 ) | 组织多个函数,实现可移植性 |
PowerShell Gallery | 官方模块仓库,可下载第三方模块 |