about_Automatic_Variables

主题
    about_Automatic_Variables

简短说明
    说明存储 Windows PowerShell 状态信息的变量。
    这些变量由 Windows PowerShell 创建并维护。


详细说明
    下面是 Windows PowerShell 中的自动变量的列表:
    
    
    $$
       包含会话所收到的最后一行中的最后一个令牌。
    

    $? 
       包含最后一个操作的执行状态。如果最后一个操作成功,则包含 TRUE,失败则包含 FALSE。
    
    $^
       包含会话所收到的最后一行中的第一个令牌。
    
    $_
       包含管道对象中的当前对象。在对管道中的每个对象或所选对象执行操作的命令中,可以使用此变量。
    
    $Args
       包含由未声明参数和/或传递给函数、脚本或脚本块的参数值组成的数组。
       在创建函数时可以声明参数,方法是使用 param 关键字或在函数名称后添加以圆括号括起、逗号
       分隔的参数列表。

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

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

    $Error
       包含错误对象的数组,这些对象表示最近的一些错误。最近的错误是该数组中的第一个错误对象 
       ($Error[0])。

    $Event 
       包含一个 PSEventArgs 对象,该对象表示一个正在被处理的事件。 
       此变量只在事件注册命令(例如 Register-ObjectEvent)的 Action 块内填充。 
       此变量的值是 Get-Event cmdlet 返回的同一个对象。  
       因此,可以在 Action 脚本块中使用 $Event 变量的属性(例如 
       $Event.TimeGenerated)。 
      
    $EventSubscriber 
       包含一个 PSEventSubscriber 对象,该对象表示正在被处理的事件的事件订阅者。 
       此变量只在事件注册命令的 Action 块内填充。此变量的值 
       是 Get-EventSubscriber cmdlet 返回的同一个对象。 

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

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

    $ForEach
       包含 ForEach-Object 循环的枚举数。可以对 $ForEach 变量的值使用枚举数的属性和方法。
       此变量仅在运行 For 循环时存在,循环完成即会删除。
    
    $Home
       包含用户的主目录的完整路径。此变量等效于 %homedrive%%homepath% 环境变量。

    $Host
       包含一个对象,该对象表示 Windows PowerShell 的当前主机应用程序。可以使用此变量在命
       令中表示当前主机,或者显示或更改主机的属性,如 $Host.version、$Host.CurrentCulture 
       或 $host.ui.rawui.setbackgroundcolor("Red")。

    $Input
       一个枚举数,它包含传递给函数的输入。$Input 变量区分大小写,只能用于函数和脚本块。(脚
       本块本质上是未命名的函数。)在函数的 Process 块中,$Input 变量包含当前位于管道中的对
       象。在 Process 块完成后,$Input 的值为 NULL。如果函数没有 Process 块,则 $Input 
       的值可用于 End 块,它包含函数的所有输入。

    $LastExitCode
       包含运行的最后一个基于 Windows 的程序的退出代码。

    $Matches
       $Matches 变量与 -match 和 -not match 运算符一起使用。
       将标量输入提交给 -match 或 -notmatch 运算符时,如果检测到匹配,则会返回一个布尔值,
       并使用由所有匹配字符串值组成的哈希表填充 $Matches 自动变量。有关 -match 运算符的详细
       信息,请参阅 about_comparison_operators。
    
    $MyInvocation
       包含一个对象,该对象具有有关当前命令(如脚本、函数或脚本块)的信息。可以使用该对象中的
       信息(如脚本的路径和文件名 ($myinvocation.mycommand.path) 或函数的名称 
       ($myinvocation.mycommand.name))来标识当前命令。对于查找正在运行的脚本的名称,这非常有用。

    $NestedPromptLevel
       包含当前提示级别。值 0 指示原始提示级别。该值在进入嵌套级别时递增,在退出嵌套级别时递减。

       例如,在使用 $Host.EnterNestedPrompt 方法时,Windows PowerShell 会出现嵌套命令
       提示符。在 Windows PowerShell 调试程序中到达断点时,Windows PowerShell 也会出现嵌
       套命令提示符。

       在进入嵌套提示时,Windows PowerShell 暂停当前命令,保存执行上下文,并递增 
       $NestedPromptLevel 变量的值。要创建更多嵌套命令提示符(最多 128 级)或返回到原始命
       令提示符,请完成命令,或键入"exit"。

       $NestedPromptLevel 变量有助于跟踪提示级别。可以创建包含此值的备用 Windows 
       PowerShell 命令提示符,以使此值始终可见。

    $NULL
       包含 NULL 或空值。可以在命令和脚本中使用此变量表示 NULL,而不是使用字符串"NULL"。
       如果该字符串转换为非空字符串或非零整数,则可将该字符串解释为 TRUE。

    $PID
       包含承载当前 Windows PowerShell 会话的进程的进程标识符 (PID)。
  
    $Profile
       包含当前用户和当前主机应用程序的 Windows PowerShell 配置文件的完整路径。可以在命令
       中使用此变量表示配置文件。例如,可以在命令中使用此变量确定是否已创建某个配置文件:

           test-path $profile

       也可以在命令中使用此变量创建配置文件:

           new-item -type file -path $pshome -force

       此外,还可以在命令中使用此变量在记事本中打开配置文件:

           notepad $profile

    $PSBoundParameters
       包含活动参数及其当前值的字典。只有在声明参数的作用域(如脚本或函数)中,
       此变量才有值。可以使用此变量显示或更改参数的当前值,也可以将参数值传递给
       其他脚本或函数。

       例如:

         function test {
            param($a, $b)
            
            # 以词典格式显示参数。
            $psboundparameters
             
            # 使用 $a 和 $b 调用 Test1 函数。
            test1 @psboundparameters
         }

    $PsCmdlet
       包含一个对象,该对象表示正在运行的 cmdlet 或高级函数。

       可以在 cmdlet 或函数代码中使用该对象的属性和方法来响应使用的条件。例如,
       ParameterSetName 属性包含正在使用的参数集的名称,而 ShouldProcess 方法将 WhatIf 
       和 Confirm 参数动态添加到 cmdlet。

       有关 $PSCmdlet 自动变量的详细信息,请参阅 about_Functions_Advanced。

    $PsCulture
       包含操作系统中当前所用的区域性的名称。区域性确定数字、货币和日期等项的显示格式。这是系
       统的 System.Globalization.CultureInfo.CurrentCulture.Name 属性的值。要获取系统
       的 System.Globalization.CultureInfo 对象,请使用 Get-Culture cmdlet。

    $PSDebugContext
       在调试期间,此变量包含有关调试环境的信息。在其他时间,此变量包含 NULL 值。因此,可以使
       用此变量指示调试程序是否拥有控制权。填充之后,此变量包含一个具有 Breakpoints 和 
       InvocationInfo 属性的 PsDebugContext 对象。InvocationInfo 属性有多个十分有用的
       属性,包括 Location 属性。Location 属性指示正在调试的脚本的路径。


    $PsHome
       包含 Windows PowerShell 的安装目录的完整路径(通常为 
       %windir%\System32\WindowsPowerShell\v1.0)。可以在 Windows PowerShell 文件
       的路径中使用此变量。例如,下面的命令在概念性帮助主题中搜索"variable"一词:

            select-string -pattern variable -path $pshome\*.txt

    $PSScriptRoot
       包含要从中执行脚本模块的目录。
       通过此变量,脚本可以使用模块路径来访问其他资源。


    $PsUICulture
       包含操作系统中当前所用的用户界面 (UI) 区域性的名称。UI 区域性确定哪些文本字符串用于用户
       界面元素(如菜单和消息)。这是系统的
       System.Globalization.CultureInfo.CurrentUICulture.Name 属性的值。要获取系统
       的 System.Globalization.CultureInfo 对象,请使用 Get-UICulture cmdlet。


    $PsVersionTable
        包含一个只读哈希表,该哈希表显示有关在当前会话中运行的 Windows PowerShell 版本的详
        细信息。
        该表包括下列项:

        CLRVersion:            公共语言运行时 (CLR) 的版本

        BuildVersion:          当前版本的内部版本号

            PSVersion:             Windows PowerShell 版本号

            WSManStackVersion:     WS-Management 堆栈的版本号

        PSCompatibleVersions:  与当前版本兼容的 Windows PowerShell 版本

            SerializationVersion    序列化方法的版本

            PSRemotingProtocolVersion
                                    Windows PowerShell 远程管理协议的版本

    $Pwd
       包含一个路径对象,该对象表示当前目录的完整路径。

    $Sender 
       包含生成此事件的对象。此变量只在事件注册命令的 Action 块内填充。 
       此变量的值也可在 Get-Event 返回的 PSEventArgs
       (System.Management.Automation.PSEventArgs) 对象的 Sender 属性中找到。 

    
    $ShellID
       包含当前 shell 的标识符。

    $SourceArgs 
       包含表示正在被处理的事件的事件参数的对象。此变量只在事件注册命令的 Action 
       块内填充。此变量的值也可在 Get-Event 返回的 PSEventArgs 
       (System.Management.Automation.PSEventArgs) 对象的 SourceArgs 属性中找到。 
      
    $SourceEventArgs 
       包含一个对象,该对象表示从正在被处理的事件的 EventArgs 中派生出的
       第一个事件参数。此变量只在事件注册命令的 Action 块内填充。 
       此变量的值也可在 Get-Event 返回的 PSEventArgs
       (System.Management.Automation.PSEventArgs) 对象的 SourceArgs 属性中找到。

      
    $This
        在定义脚本属性或脚本方法的脚本块中,$This 变量引用要扩展的对象。

    $True
       包含 TRUE。可以在命令和脚本中使用此变量表示 TRUE。


另请参阅
    about_Hash_Tables
    about_Preference_Variables
    about_Variables