PowerShell 入门到进阶:从基础到实战 2(别名、变量与脚本执行策略)

302 阅读3分钟

一、PowerShell 别名使用

1.1 什么是别名?

PowerShell 的别名(Alias)是命令的简短替代名称,用于简化常用命令的输入。例如,dirGet-ChildItem 的别名,lsGet-ChildItem 的别名(Linux 风格),catGet-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 常用别名示例

别名对应命令
cdSet-Location(切换目录)
delRemove-Item(删除文件/目录)
echoWrite-Output(输出内容)
clsClear-Host(清屏)
gcGet-Content(读取文件内容)
gciGet-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 的别名、变量和脚本执行策略是日常管理和自动化任务的核心工具。通过熟练掌握别名的使用与自定义、变量的定义与操作、环境变量的管理以及脚本执行策略的设置,可以显著提升工作效率。无论是初学者还是高级用户,这些功能都能帮助你更高效地完成系统管理、数据处理和自动化任务。