变量基础
变量命名与标识
所有 PowerShell 变量必须以美元符号 $ 开头。在命令行中直接输入变量名(带 $)会将其值输出到控制台。
$variableName
变量赋值
使用等号 = 为变量赋值:
- 如果变量不存在,此操作会创建它并赋予初始值。
- 如果变量已存在,则会更新其值。
$variableName = value
变量管理(使用 Cmdlet )
创建/修改变量 (Set-Variable)
使用 Set-Variable cmdlet 可以显式地创建或更改变量。-Name 参数指定变量名(无需带 $),-Value 参数指定值。
Set-Variable -Name variableName -Value value
获取变量 (Get-Variable)
使用 Get-Variable cmdlet 可以获取指定变量的信息。-Name 参数可以包含通配符 * 来匹配多个变量。如果不提供 -Name 参数,则列出所有变量。
Get-Variable -Name variableName
示例:
-
Get-Variable -Name color:获取$color变量的信息。 -
Get-Variable -Name *Preference:获取所有以 "Preference" 结尾的变量(首选项变量)。 -
Get-Variable:列出当前会话中的所有变量。
特殊变量
$null 变量
$null 表示“空”或“没有值”。常用于将变量设置为空状态。
$foo = $null
$LASTEXITCODE 变量
用于存储最后运行的外部程序的退出代码(返回码)。
ping -n 1 baidu.com
$LASTEXITCODE
通常,退出码 0 表示成功,非零值表示失败或特定状态。
首选项变量
用于控制 PowerShell 对各种类型消息(错误、警告、调试信息等)的默认处理行为。
$PreferenceVariable = 'Value'
显示类
常见键:
| 键 | 描述 |
|---|---|
$ErrorActionPreference |
控制 PowerShell 如何处理非终止错误。 |
$WarningPreference |
控制警告消息的行为 |
$VerbosePreference |
控制详细输出。 |
$DebugPreference |
控制调试输出。 |
$InformationPreference |
控制信息流的输出(PowerShell 5.0+)。 |
$ProgressPreference |
控制进度条的显示。 |
常见值:
| 值 | 描述 |
|---|---|
SilentlyContinue |
抑制错误消息,继续执行 |
Stop |
将错误转换为终止错误 |
Continue |
显示错误并继续执行(默认值) |
Inquire |
询问用户如何处理错误 |
Ignore |
完全忽略错误(不记录到 $Error) |
操作询问
$ConfirmPreference控制何时确认操作的时机。
| 值 | 描述 |
|---|---|
High |
高风险操作需要确认 |
Medium |
中高风险操作需要确认 |
Low |
所有风险操作都需要确认 |
None |
从不确认 |
> $ConfirmPreference = 'Low'
> Remove-Item -Path "important_file.txt"
Confirm
Are you sure you want to perform this action?
Performing the operation "Remove File" on target "E:\path\to\important_file.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
模拟模式
$WhatIfPreference用于启用模拟模式,不实际执行操作。
> $WhatIfPreference = $true
> Remove-Item "file.txt"
What if: Performing the operation "Remove File" on target "E:\path\to\file.txt".
>
环境变量
通过 environment provider 访问
默认情况下,PowerShell 会创建一个名为 env 的驱动器,通过该驱动器可以像访问文件系统一样访问环境变量。
Get-ChildItem env:
通过指定变量名,可以获取特定环境变量的详细信息。
Get-ChildItem env:Path
通过变量访问
$env:前缀提供了最简洁直观的环境变量访问方式。
$env:USERNAME
当变量名包含特殊字符时需要使用花括号进行转义。
${env:Program Files} = "C:\Program Files"
该方法还可以直接修改环境变量,但这仅对当前会话有效,不会永久更改系统环境变量。
$env:TEMP = "C:\CustomTemp"
通过.NET类方法访问
System.Environment类提供了一系列静态方法,用于在进程(“Process”)、用户(“User”)和系统(“Machine”)范围内管理环境变量。
GetEnvironmentVariable方法用于检索指定范围内的环境变量值。
[Environment]::GetEnvironmentVariable("TEMP", "Machine")
SetEnvironmentVariable方法用于在指定范围内创建、修改或删除环境变量。
[Environment]::SetEnvironmentVariable("AppData", "D:\Data", "User")