一、PowerShell 别名使用
1.1 什么是别名?
PowerShell 的别名(Alias)是命令的简短替代名称,用于简化常用命令的输入。例如,dir 是 Get-ChildItem 的别名,ls 是 Get-ChildItem 的别名(Linux 风格),cat 是 Get-Content 的别名。
1.2 查看别名
使用 Get-Alias 命令可以查看当前会话中的所有别名:
# 查看所有别名
Get-Alias
# 查看特定别名的定义
Get-Alias dir
输出示例:
CommandType Name ModuleName
----------- ---- ----------
Alias dir -> Get-ChildItem
Alias ls -> Get-ChildItem
Alias cat -> Get-Content
1.3 常用别名示例
| 别名 | 对应命令 |
|---|---|
cd | Set-Location(切换目录) |
del | Remove-Item(删除文件/目录) |
echo | Write-Output(输出内容) |
cls | Clear-Host(清屏) |
gc | Get-Content(读取文件内容) |
gci | Get-ChildItem(列出目录内容) |
示例:
# 使用别名列出当前目录内容
dir
# 使用别名清屏
cls
# 使用别名删除文件
del test.txt
二、PowerShell 自定义别名
2.1 创建自定义别名
使用 New-Alias 命令可以创建自定义别名,但需注意:自定义别名仅在当前会话中生效。
语法:
New-Alias -Name <别名> -Value <命令>
示例:
# 创建别名 wh,指向 Write-Host
New-Alias -Name wh -Value Write-Host
# 使用自定义别名
wh "Hello, World!"
2.2 保存自定义别名(持久化)
若希望自定义别名在每次启动 PowerShell 时自动加载,需将 New-Alias 命令添加到 PowerShell 配置文件中:
# 打开配置文件
notepad $PROFILE
# 在配置文件中添加以下内容
New-Alias -Name wh -Value Write-Host
三、PowerShell 变量基础
3.1 变量定义
PowerShell 的变量以 $ 符号开头,无需声明类型即可直接赋值:
# 定义变量
$name = "Alice"
$age = 25
$isStudent = $true
3.2 变量使用
变量支持字符串插值和调用属性/方法:
# 字符串插值
Write-Host "Name: $name, Age: $age"
# 调用变量的方法
$date = Get-Date
Write-Host "当前时间: $date"
3.3 数据类型
PowerShell 支持多种数据类型,变量会自动匹配类型:
# 常见数据类型
$string = "Hello"
$int = 123
$float = 3.14
$bool = $true
$array = @(1, 2, 3)
$hashTable = @{Name="Tom"; Age=30}
查看变量类型:
$string.GetType().Name # String
$int.GetType().Name # Int32
四、PowerShell 变量操作
4.1 变量赋值与修改
# 修改变量值
$age = 30
# 复合赋值
$count = 0
$count += 1 # 等价于 $count = $count + 1
4.2 变量增删改查
-
查看变量:
Get-Variable -
删除变量:
Remove-Variable -Name age -
清除变量内容:
Clear-Variable -Name name
4.3 数组与哈希表操作
# 数组操作
$colors = @("Red", "Green", "Blue")
$colors += "Yellow" # 添加元素
$colors[0] # 访问第一个元素
# 哈希表操作
$user = @{Name="Alice"; Age=25}
$user["Name"] # 访问键值
$user["Age"] = 30 # 修改键值
五、PowerShell 自动化变量
5.1 常见自动化变量
PowerShell 提供了许多自动化变量,用于存储运行时状态信息:
| 变量 | 说明 |
|---|---|
$? | 上一条命令是否成功(True/False) |
$PSCommandPath | 当前脚本的完整路径 |
$PSScriptRoot | 当前脚本的目录路径 |
$PID | 当前 PowerShell 进程的 ID |
$Error | 错误历史记录(数组) |
$_ | 管道中的当前对象(常用于脚本块) |
示例:
# 检查上一条命令是否成功
Get-Process invalidprocess
if ($?) {
Write-Host "命令成功"
} else {
Write-Host "命令失败"
}
六、PowerShell 环境变量
6.1 访问环境变量
环境变量用于存储系统或用户级别的配置信息,PowerShell 使用 $Env: 语法访问环境变量:
# 获取系统环境变量 Path
$Env:Path
# 获取用户环境变量 TEMP
$Env:TEMP
6.2 修改环境变量
# 设置临时环境变量(仅当前会话生效)
$Env:MyCustomVar = "Hello"
# 查看环境变量
$Env:MyCustomVar
# 删除环境变量
Remove-Item Env:MyCustomVar
6.3 区分作用域
- Windows 系统变量:作用域为整个系统,所有用户共享。
- 用户变量:仅对当前用户生效。
- 进程变量:仅在当前 PowerShell 会话中有效。
示例:
# 设置用户变量(需要管理员权限)
[System.Environment]::SetEnvironmentVariable("MyVar", "Value", "User")
七、PowerShell 脚本执行策略
7.1 什么是执行策略?
PowerShell 默认限制脚本执行,以防止恶意脚本运行。执行策略由 Set-ExecutionPolicy 控制。
7.2 查看当前执行策略
Get-ExecutionPolicy
输出示例:
Restricted
7.3 修改执行策略
| 策略 | 说明 |
|---|---|
Restricted | 默认策略,阻止脚本运行 |
RemoteSigned | 允许本地脚本运行,远程脚本需签名 |
AllSigned | 所有脚本必须签名 |
Unrestricted | 允许所有脚本运行,但警告远程脚本 |
示例:
# 设置为 RemoteSigned(允许本地脚本运行)
Set-ExecutionPolicy RemoteSigned
# 设置为 Unrestricted(允许所有脚本)
Set-ExecutionPolicy Unrestricted
7.4 临时绕过策略
若需临时运行脚本而不修改策略,可使用 -ExecutionPolicy 参数:
# 启动 PowerShell 并绕过策略
pwsh -ExecutionPolicy Bypass
总结
PowerShell 的别名、变量和脚本执行策略是日常管理和自动化任务的核心工具。通过熟练掌握别名的使用与自定义、变量的定义与操作、环境变量的管理以及脚本执行策略的设置,可以显著提升工作效率。无论是初学者还是高级用户,这些功能都能帮助你更高效地完成系统管理、数据处理和自动化任务。