当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 关于自动变量

作者:精品下载站 日期:2024-12-14 02:24:47 浏览:14 分类:玩电脑

关于自动变量


简短描述

描述存储 PowerShell 状态信息并由 PowerShell 创建和维护的变量。

从概念上讲,这些变量中的大多数都被认为是只读的。尽管它们可以被写入,但为了向后兼容,它们不应该被写入。

以下是 PowerShell 中自动变量的列表:

  • $$
  • $?
  • $^
  • $_
  • $参数
  • $ConsoleFileName
  • $EnabledExperimentalFeatures
  • $错误
  • $事件
  • $EventArgs
  • $EventSubscriber
  • $ExecutionContext
  • $假
  • $foreach
  • $HOME
  • $主机
  • $输入
  • $IsCoreCLR
  • $IsLinux
  • $IsMacOS
  • $IsWindows
  • $最后的代码
  • $火柴
  • $我的调用
  • $NestedPromptLevel
  • $null
  • $PID
  • $个人资料
  • $PSBoundParameters
  • $PSCmdlet
  • $PSCommandPath
  • $PS文化
  • $PSDebugContext
  • $PS版
  • $PSHOME
  • $PS项目
  • $PSScriptRoot
  • $PSSenderInfo
  • $PSUI文化
  • $PS版本表
  • $PWD
  • $发件人
  • $ShellId
  • $StackTrace
  • $开关
  • $这个
  • $真

详细描述

$$

包含会话收到的最后一行中的最后一个令牌。

$?

包含最后一条命令的执行状态。如果最后一个命令成功,则它包含 True;如果失败,则包含 False。解析错误不会导致执行,因此不会影响 $? 的值。

对于在管道中的多个阶段运行的 cmdlet 和高级函数,例如在 processend 块中,调用 this.WriteError()$PSCmdlet.WriteError() 分别在任意点将 $? 设置为 Falsethis.ThrowTerminateError() 也是如此 和 $PSCmdlet.ThrowTerminateError()

Write-Error cmdlet 始终在执行后立即将 $? 设置为 False,但不会设置 $? 为 False

function Test-WriteError
{
    Write-Error "Bad"
    "The `$? variable is: $?"
}

Test-WriteError
"Now the `$? variable is: $?"
Test-WriteError:
Line |
   7 |  Test-WriteError
     |  ~~~~~~~~~~~~~~~
     | Bad
The $? variable is: False
Now the $? variable is: True

对于后一个目的,应改用 $PSCmdlet.WriteError()

对于本机命令(可执行文件),当 $LASTEXITCODE 为 0 时,$? 设置为 True,并设置为 False > 当 $LASTEXITCODE 是任何其他值时。

笔记

在 PowerShell 7 之前,将语句括在括号 (...)、子表达式语法 $ (...) 或数组表达式 @(. ..) 始终将 $? 重置为 True。例如,(Write-Error)$? 显示为 True。这种行为在 PowerShell 7 中发生了变化,因此 $? 始终反映这些表达式中最后一个命令运行的实际成功情况。

$^

包含会话收到的最后一行中的第一个令牌。

$_

$PSItem相同。包含管道对象中的当前对象。您可以在对管道中的每个对象执行操作的命令中使用此变量。

有关详细信息,请参阅 about_PSItem。

$参数

包含传递给函数、脚本或脚本块的未声明参数的值数组。创建函数时,可以使用 param 关键字声明参数,或者在函数名称后面的括号中添加以逗号分隔的参数列表。

在事件操作中,$args 变量包含表示正在处理的事件的事件参数的对象。此变量仅在事件注册命令的 Action 块内填充。该变量的值还可以在 Get-Event 返回的 PSEventArgs 对象的 SourceArgs 属性中找到。

$ConsoleFileName

包含会话中最近使用的控制台文件 (.psc1) 的路径。当您使用 PSConsoleFile 参数启动 PowerShell 或使用 Export-Console cmdlet 将管理单元名称导出到控制台文件时,会填充此变量。

当您使用不带参数的 Export-Console cmdlet 时,它会自动更新会话中最近使用的控制台文件。您可以使用此自动变量来确定要更新的文件。

$EnabledExperimentalFeatures

包含已启用的实验功能的名称列表。

$错误

包含表示最新错误的错误对象数组。最近的错误是数组 $Error[0] 中的第一个错误对象。

要防止将错误添加到 $Error 数组中,请使用值为 IgnoreErrorAction 公共参数。有关更多信息,请参阅 about_CommonParameters。

$事件

包含表示正在处理的事件的 PSEventArgs 对象。此变量仅在事件注册命令(例如 Register-ObjectEvent)的 Action 块内填充。此变量的值与 Get-Event cmdlet 返回的对象相同。您可以在 Action 脚本块中使用 Event 变量的属性,例如 $Event.TimeGenerated

$EventArgs

包含一个对象,该对象表示从正在处理的事件的 EventArgs 派生的第一个事件参数。此变量仅在事件注册命令的 Action 块内填充。该变量的值还可以在 Get-Event 返回的 PSEventArgs 对象的 SourceEventArgs 属性中找到。

$EventSubscriber

包含一个 PSEventSubscriber 对象,该对象表示正在处理的事件的事件订阅者。此变量仅在事件注册命令的 Action 块内填充。此变量的值与 Get-EventSubscriber cmdlet 返回的对象相同。

$ExecutionContext

包含一个 EngineIntrinsics 对象,该对象表示 PowerShell 主机的执行上下文。您可以使用此变量来查找 cmdlet 可用的执行对象。

$假

包含错误。您可以使用此变量在命令和脚本中表示 False,而不是使用字符串 "false"。如果该字符串转换为非空字符串或非零整数,则可以将其解释为 True

$foreach

包含 ForEach 循环的枚举器(不是结果值)。 $ForEach 变量仅在 ForEach 循环运行时存在;循环完成后将其删除。

枚举器包含可用于检索循环值和更改当前循环迭代的属性和方法。有关详细信息,请参阅使用枚举器。

$HOME

包含用户主目录的完整路径。在 Windows 上,此变量使用 "$env:USERPROFILE" Windows 环境变量的值,通常为 C:\Users\

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯