PowerShell 的变量

变量基础

变量命名与标识

所有 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")
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容