主题
    首选项变量

简短说明
    用于自定义 Windows PowerShell 行为的变量

详细说明
    Windows PowerShell 包含一组可用于自定义其行为的变量。这些“首选项变量”
    的作用与基于 GUI 的系统中选项的作用相似。

    首选项变量影响 Windows PowerShell 操作环境以及在该环境中运行的所有命令。
    很多情况下,cmdlet 带有的参数可用于替代特定命令的首选行为。

    下表列出了首选项变量及其默认值。

    Variable				 默认值
    --------                             -------------
    $ConfirmPreference                   High
    $DebugPreference                     SilentlyContinue
    $ErrorActionPreference               Continue
    $ErrorView                           NormalView
    $FormatEnumerationLimit              4
    $LogCommandHealthEvent		 False(不记入日志)
    $LogCommandLifecycleEvent		 False(不记入日志)
    $LogEngineHealthEvent		 True(记入日志)
    $LogEngineLifecycleEvent		 True(记入日志)
    $LogProviderLifecycleEvent		 True(记入日志)
    $LogProviderHealthEvent		 True(记入日志)
    $MaximumAliasCount                   4096
    $MaximumDriveCount                   4096
    $MaximumErrorCount                   256
    $MaximumFunctionCount                4096
    $MaximumHistoryCount                 64
    $MaximumVariableCount                4096
    $OFS				 (空格字符 (" "))
    $OutputEncoding		         ASCIIEncoding 对象
    $ProgressPreference			 Continue
    $PSEmailServer			 (无)
    $PSSessionApplicationName		 WSMAN
    $PSSessionConfigurationName		 https://schemas.microsoft.com/powershell/microsoft.powershell
    $PSSessionOption			 (见下文)
    $VerbosePreference			 SilentlyContinue
    $WarningPreference			 Continue
    $WhatIfPreference			 0


    Windows Powershell 还包含存储用户首选项的以下环境变量。有关环境变量的更多详细,
    请参阅 about_environment_variables。

    Variable
    --------                         
    PSModulePath

使用首选项变量
    本文描述每一个首选项变量。

    若要显示某特定首选项变量的当前值,请键入该变量的名称。Windows PowerShell 
    在响应中提供该值。例如,下面的命令显示了 $ConfirmPreference 变量的值。

        PS> $ConfirmPreference
        High

    若要更改变量的值,请使用赋值语句。例如,下面的语句将值“Medium”赋给 $ConfirmPreference 变量。

        PS> $ConfirmPreference = "Medium"

    与所有其他变量一样,您设置的值特定于当前 Windows PowerShell 窗口。为了使这些值在所有 Windows 
    PowerShell 窗口中都有效,请将它们添加到 Windows PowerShell 配置文件中。有关详细信息,请参阅 
    about_profiles。


远程工作
   当在远程计算机上运行命令时,远程命令只遵循在远程计算机上的 Windows PowerShell 客户端中设置的首选
   项。例如,当运行远程命令时,远程计算机上 $DebugPreference 变量的值决定了 Windows PowerShell 如何
   响应调试消息。

   有关远程命令的详细信息,请参阅 about_remote。



$ConfirmPreference
------------------
    确定哪些 cmdlet 操作在执行前自动请求用户确认。
        
    当 $ConfirmPreference 值(High、Medium、Low 或 None)大于等于 cmdlet 操作的风险(High、
    Medium、Low 或 None)时,Windows PowerShell 在执行该操作时自动请求用户确认。

    可以使用 cmdlet 的 Confirm 参数来替代特定命令的首选项。

        有效值:
		None:	不自动确认任何 cmdlet 操作。用户必须使用 Confirm 参数来请求确认特定命令。

		Low: 	风险为低、中或高的 cmdlet 操作自动提示确认。若要阻止特定命令提示确认,
		      	请使用 -Confirm:$false。

		Medium:风险为中或高的 cmdlet 操作自动提示确认。若要为特定命令启用提示确认,
			请使用 -confirm。若要阻止特定命令提示确认,请使用 confirm:$false。

		High:	高风险的 cmdlet 操作自动提示确认。若要为特定命令启用提示确认,
	       (默认) 请使用 -confirm。若要阻止特定命令提示确认,请使用 -confirm:$false。


    详细说明
        当 cmdlet 操作对系统有显著影响(例如,删除数据或使用大量系统资源)时,
        Windows PowerShell 在执行操作之前自动提示您确认。

        例如,

	    PS> remove-item pref2.txt

            Confirm
            Are you sure you want to perform this action?
            Performing operation "Remove File" on Target "C:\pref2.txt".
            [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):

        风险估计是该 cmdlet 的称为“ConfirmImpact”的部分。该项不可更改。

        可能对系统产生风险的 cmdlet 有一个 Confirm 参数,可以使用该参数来请求或阻止对特定命令的确认。

	由于大多数 cmdlet 使用默认风险值 Medium,并且 $ConfirmPreference 的默认值为 High,因此自动提
	示确认极少发生。但是,可通过将 $ConfirmPreference 值更改为 Medium 或 Low 来激活自动提示确认。

    示例
      下面的示例演示 $ConfirmPreference 默认值的作用。High 值只要求确认高风险 cmdlet 操作。大多数操
      作是中等风险,因此它们不会自动提示确认(但可以使用 cmdlet 的 Confirm 参数来请求确认某个特定命令)。

          PS> $confirmpreference              #Get the current value of the
          High                                 variable
          
          PS> remove-item temp1.txt           #Delete a file
          PS>                                 #Deleted without confirmation 
          PS> remove-item temp2.txt -confirm  #Use the Confirm parameter

          Confirm
          Are you sure you want to perform this action?
          Performing operation "Remove File" on Target "C:\temp2.txt".
          [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):


       下面的示例演示将 $ConfirmPreference 的值更改为 Medium 的作用。由于大多数 cmdlet 操作都是中
       等风险,因此它们自动提示确认,并且您必须使用值为 $false 的 Confirm 参数才能阻止某个特定
       命令的确认提示。

            
          PS> $confirmpreference = "Medium"  
                                     #Change the value of $ConfirmPreference
          PS> remove-item temp2.txt           
                                     #Deleting a file triggers confirmation
          Confirm
          Are you sure you want to perform this action?
          Performing operation "Remove File" on Target "C:\temp2.txt".
          [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):
	

          PS> remove-item temp3.txt -confirm:$false   #Use Confirm parameter
                                                       to suppress confirmation
          PS>

$DebugPreference
------------------
	确定 Windows PowerShell 如何响应由脚本、cmdlet 或提供程序生成的调试消息,
	或者 Write-Debug 命令在命令行上生成的调试消息。

        某些 cmdlet 会显示调试消息,这些消息通常是面向程序员和技术支持专业人员的技术性很强的
        消息。默认情况下,不会显示调试消息,但可通过更改 $DebugPreference 的值来显示调试消息。
        
        您还可以使用 cmdlet 的 Debug 通用参数来显示或隐藏特定命令的调试消息。
        有关详细信息,请键入“get-help about_commonparameters”。

        有效值:
	    Stop:               显示调试消息并停止执行。将错误写至控制台。

     	    Inquire:            显示调试消息,并询问您是否要继续。

            Continue:           显示调试消息并继续执行。

            SilentlyContinue:	 无效果。不显示调试消息,执行继续而无中断。
            (默认)

    示例
    
    下面的示例演示在命令行上输入 Write-Debug 命令时,更改 $DebugPreference 值的作用。更改将影响所有
    调试消息,包括 cmdlet 和脚本生成的消息。该示例还演示了 Debug 通用参数的用法,该参数显示或隐藏与单个
    命令相关的调试消息。

    下面的示例演示了默认值“SilentlyContinue”的作用。不显示调试消息且处理继续。最后一条命令使用 Debug 
    参数替代单个命令的首选项。

        PS> $debugpreference                    # Get the current value of
        SilentlyContinue                          $DebugPreference

        PS> write-debug "Hello, World"
        PS>                                     # The debug message is not
                                                  displayed.

        PS> write-debug "Hello, World" -Debug   # Use the Debug parameter
        DEBUG: Hello, World                     # The debug message is
                                                  is requested.                                                                                                    displayed and confirmation
        Confirm
        Continue with this operation?
        [Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend  [?] Help (default is "Y"):

   
    下面的示例演示“Continue”值的作用。最后一条命令使用值为 $false 的 Debug 参数阻止单个命令的消息。

        PS> $debugpreference = "Continue"   # Change the value to "Continue"

        PS> write-debug "Hello, World"
        DEBUG: Hello, World                 # The debug message is displayed
        PS>                                   and processing continues.
                                           

        PS> write-debug "Hello, World" -Debug:$false   
                                            # Use the Debug parameter with
                                              false.
        PS>                                 # The debug message is not
                                              displayed.

        
    下面的示例演示“Stop”值的作用。最后一条命令使用值为 $false 的 Debug 参数阻止单个命令的消息。

        PS> $debugpreference = "Stop"       #Change the value to "Stop"
        PS> write-debug "Hello, World"
        DEBUG: Hello, World
        Write-Debug : Command execution stopped because the shell variable "DebugPreference" is
        set to Stop.
        At line:1 char:12
        + write-debug  <<<< "Hello, World"

        PS> write-debug "Hello, World" -Debug:$false   
                                            # Use the Debug parameter with
                                              $false
        PS>                                 # The debug message is not 
                                              displayed and processing is
                                              not stopped.
      

    下面的示例演示“Inquire”值的作用。最后一条命令使用值为 $false 的 Debug 参数阻止单个命令的消息。

        PS> $debugpreference = "Inquire"
        PS> write-debug "Hello, World"
        DEBUG: Hello, World

        Confirm
        Continue with this operation?
        [Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend  [?] Help (default is "Y"):

        PS> write-debug "Hello, World" -Debug:$false   
                                            # Use the Debug parameter with
                                              $false
        PS>                                 # The debug message is not
                                              displayed and processing
                                              continues without interruption.


$ErrorActionPreference
----------------------
	确定 Windows PowerShell 如何响应命令行、脚本、cmdlet 或提供程序中的非终止性 
	错误(不会导致cmdlet 处理停止的错误),例如 Write-Error cmdlet 生成的错误。

        您还可以使用 cmdlet 的 ErrorAction 通用参数来替代特定命令的首选项。
        有关详细信息,请键入“get-help about_commonparameters”。


        有效值:
	    Stop:               显示错误消息并停止执行。

     	    Inquire:            显示错误消息,并询问您是否要继续。

            Continue:           显示错误消息并继续执行。

            SilentlyContinue:	 无效果。不显示错误消息,执行继续而无中断。
	    (默认)

       $ErrorActionPreference 和 ErrorAction 通用参数都不会影响 Windows 
       PowerShell 响应终止性错误(导致 cmdlet 处理停止的错误)的方式。

       有关 ErrorAction 通用参数的详细信息,请键入“get-help about_commonparameters”。


    示例

    下面的示例演示 $ErrorActionPreference 不同值的作用,以及如何使用 ErrorAction 通用
    参数来替代单个命令的首选项。ErrorAction 参数的有效值与 $ErrorActionPreference 变量相同。
    
    下面的示例演示 Continue 值的作用,该值是默认值。

        PS> $erroractionpreference                      
        Continue		# Display the value of the preference.		          
                                  
        PS> write-error "Hello, World"                  
                                # Generate a non-terminating error.

        write-error "Hello, World" : Hello, World       
                                # The error message is displayed and
                                  execution continues.

        PS> write-error "Hello, World" -ErrorAction:SilentlyContinue
                                # Use the ErrorAction parameter with a 
                                  value of "SilentlyContinue".
        PS>                                             
                                # The error message is not displayed and
                                  execution continues.

    下面的示例演示 SilentlyContinue 值的作用。

        PS> $ErrorActionPreference = "SilentlyContinue"
                                # Change the value of the preference.
        PS> write-error "Hello, World"                  
                                # Generate an error message.
        PS>                     
                                # Error message is suppressed.
        PS> write-error "Hello, World" -erroraction:continue
                                # Use the ErrorAction parameter with a
                                  value of "Continue".
        write-error "Hello, World" -erroraction:continue : Hello, World
                                # The error message is displayed and
                                  execution continues.

       
    下面的示例演示真实错误生成的结果。此例中,命令获取一个不存在的文件 nofile.txt。
    该示例还使用 ErrorAction 通用参数来替代首选项。

        PS> $erroractionpreference                      
        SilentlyContinue        # Display the value of the preference.     
                                

        PS> get-childitem -path nofile.txt
        PS>                     # Error message is suppressed.

        PS> $ErrorActionPreference = "Continue" 
                                # Change the value to Continue.

        PS> get-childitem -path nofile.txt
        Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
        At line:1 char:4
        + get-childitem  <<<< nofile.txt

        PS> get-childitem -path nofile.txt -erroraction SilentlyContinue
                                # Use the ErrorAction parameter
        PS>                     
                                # Error message is suppressed.
  
        PS> $ErrorActionPreference = "Inquire"          
                                # Change the value to Inquire.
        PS> get-childitem -path nofile.txt

        Confirm
        Cannot find path 'C:\nofile.txt' because it does not exist.
        [Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend  [?] Help (default is "Y"): y
        
        Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
        At line:1 char:4
        + get-childitem  <<<< nofile.txt

        PS> $ErrorActionPreference = "Continue"                  
                                # Change the value to Continue.
        PS> Get-Childitem nofile.txt -erroraction "Inquire"      
                                # Use the ErrorAction parameter to override
                                  the preference value.

        Confirm
        Cannot find path 'C:\nofile.txt' because it does not exist.         
        [Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend  [?] Help (default is "Y"):


$ErrorView
----------
        确定 Windows PowerShell 中错误消息的显示格式。

        有效值:
	    NormalView:         面向大多数用户的详细视图。由以下内容组成:错误描述、
	    (默认)		 错误中所涉及对象的名称,以及指向命令中导致错误的词的箭头 (<<<<)。

     	    CategoryView:       针对生产环境设计的简明结构化视图。格式为:{Category}: 
     	    			 ({TargetName}:{TargetType}):[{Activity}], {Reason}

        有关 CategoryView 中字段的详细信息,请参阅 Windows PowerShell SDK 中的
        “ErrorCategoryInfo 类”。
        
    示例

    下面的几个示例演示 ErrorView 值的作用。

    下面的示例演示当 $ErrorView 值为 NormalView 时错误是如何显示的。此例中,Get-ChildItem 命令用于
    查找不存在的文件。

        PS> $ErrorView                         # Verify the value.
        NormalView

        PS> get-childitem nofile.txt           # Find a non-existent file.
        Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
        At line:1 char:14
        + get-childitem  <<<< nofile.txt

    下面的示例演示当 $ErrorView 的值为 CategoryView 时,如何显示与上面相同的错误。

        PS> $ErrorView = "CategoryView"        # Change the value to 
                                                 CategoryView

        PS> get-childitem nofile.txt
        ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem], ItemNotFoundException

 
   下面的示例表明 ErrorView 的值只影响错误显示;它不会更改存储在 $error 自动变量中的错误对象的结构。
   有关 $error 自动变量的信息,请参阅 about_automatic_variables。

   此命令接受与错误数组中的最新错误(元素 0)关联的 ErrorRecord 对象,并以列表格式显示错误对象的
   所有属性。
           
        PS> $error[0] | format-list -property * -force

        Exception    : System.Management.Automation.ItemNotFoundException: Cannot find path
                       'C:\nofile.txt' because it does not exist.
                       at System.Management.Automation.SessionStateInternal.GetChildItems(String path,
                       Boolean recurse, CmdletProviderContext context)
                       at System.Management.Automation.ChildItemCmdletProviderIntrinsics.Get(String path,
                       Boolean recurse, CmdletProviderContext context)
                       at Microsoft.PowerShell.Commands.GetChildItemCommand.ProcessRecord()
        TargetObject          : C:\nofile.txt
        CategoryInfo          : ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem],
                                ItemNotFoundException
        FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
        ErrorDetails          :
        InvocationInfo        : System.Management.Automation.InvocationInfo


$FormatEnumerationLimit
-----------------------
        确定一次显示中包含多少个枚举项。此变量不影响基础对象;只影响显示。
        当 $FormatEnumerationLimit 的值小于枚举项的数量时,Windows PowerShell  
        添加一个省略号 (...) 来指示还有其他项未显示。

        有效值:整数 (Int32)
        默认值:4

    示例

        下面的示例演示如何使用 $FormatEnumerationLimit 变量来改善枚举项的显示。

        此示例中的命令生成一个表,该表分两组列出计算机上运行的所有服务;一组表示正在运行的服务,另一组表
        示已停止的服务。此例中使用 Get-Service 命令获取所有服务,然后将结果通过管道发送给 Group-Object 
        cmdlet,后者按服务状态将结果分组。

        得到的显示结果是一个表,表中在 Name 列中列出状态,在 Group 列中列出处于该状态的进程。(若要更改
        列标签,请使用哈希表。有关详细信息,请参阅"get-help format-table - 示例"中的示例。)

        Group 列中对应每种状态最多列出 4 个服务。为了增加列出的项数,示例中将 
        $FormatEnumerationLimit 的值增加到 1000。

        在得到的显示结果中,Group 列中的列表受到行长度的限制。示例的最后一条命令使用 Format-Table 的 
        Wrap 参数显示每个 Status 组中的所有进程。
         

        PS> $formatenumerationlimit         # Find the current value
        4
        
        PS> get-service | group-object -property status           
                                            # List all services grouped by
                                              status

        Count Name                      Group
        ----- ----                      -----
           60 Running                   {AdtAgent, ALG, Ati HotKey Poller, AudioSrv...}   
           41 Stopped                   {Alerter, AppMgmt, aspnet_state, ATI Smart...}

                                           # The list is truncated after
                                             4 items.


        PS> $formatenumerationlimit = 1000
                                           # Increase the limit to 1000.
        
        PS> get-service | group-object -property status           
                                           # Repeat the command.

        Count Name     Group
        ----- ----     -----
           60 Running  {AdtAgent, ALG, Ati HotKey Poller, AudioSrv, BITS, CcmExec...
           41 Stopped  {Alerter, AppMgmt, aspnet_state, ATI Smart, Browser, CiSvc...


        PS> get-service | group-object -property status | format-table -wrap
                                           # Add the Wrap parameter.

        Count Name       Group
        ----- ----       -----
           60 Running    {AdtAgent, ALG, Ati HotKey Poller, AudioSrv, BITS, CcmExec, Client
                         for NFS, CryptSvc, DcomLaunch, Dhcp, dmserver, Dnscache, ERSvc,   
                         Eventlog, EventSystem, FwcAgent, helpsvc, HidServ, IISADMIN,    
                         InoRPC, InoRT, InoTask, lanmanserver, lanmanworkstation, LmHosts, 
                         MDM, Netlogon, Netman, Nla, NtLmSsp, PlugPlay, PolicyAgent,   
                         ProtectedStorage, RasMan, RemoteRegistry, RpcSs, SamSs, Schedule,
                         seclogon, SENS, SharedAccess, ShellHWDetection, SMT PSVC, Spooler,    
                         srservice, SSDPSRV, stisvc, TapiSrv, TermService, Themes, TrkWks,
                         UMWdf, W32Time, W3SVC, WebClient, winmgmt, wscsvc, wuauserv,
                         WZCSVC, zzInterix}

           41 Stopped    {Alerter, AppMgmt, aspnet_state, ATI Smart, Browser, CiSvc,
                         ClipSrv, clr_optimization_v2.0.50727_32, COMSysApp, CronService, 
                         dmadmin, FastUserSwitchingCompatibility, HTTPFilter, ImapiService,
                         Mapsvc, Messenger, mnmsrvc, MSDTC, MSIServer, msvsmon80, NetDDE, 
                         NetDDEdsdm, NtmsSvc, NVSvc, ose, RasAuto, RDSessMgr, RemoteAccess,    
                         RpcLocator, RSVP, SCardSvr, SwPrv, SysmonLog, TlntSvr, upnphost,      
                         UPS, VSS, WmdmPmSN, Wmi, WmiApSrv, xmlprov}



$Log*Event
----------
        Log*Event 首选项变量确定哪些类型的事件写入事件查看器中的 Windows PowerShell 
        事件日志。默认情况下,只有引擎和提供程序事件记入日志,但是可以使用 Log*Event 
        首选项变量来自定义您的日志,如记录有关命令的事件。

        Log*Event 首选项变量如下:

            $LogCommandHealthEvent:记录命令初始化和进行处理时产生的错误和异常。
            默认值 = $false(不记入日志)。

            $LogCommandLifecycleEvent:
                记录命令和命令管道的启动和停止,以及命令发现过程中的安全异常。
                默认值 = $false(不记入日志)。

            $LogEngineHealthEvent:记录会话的错误和故障。默认值 = $true(记入日志)。

            $LogEngineLifecycleEvent:记录会话的打开和关闭。默认值 = $true(记入日志)。

            $LogProviderHealthEvent:记录提供程序错误,如读写错误、查找错误以及调用错误。
            默认值 = $true(记入日志)。

            $LogProviderLifecycleEvent:记录添加和删除 Windows PowerShell 提供程序。
                默认值 = $true(记入日志)。(有关 Windows PowerShell 提供程序的信息,
                请键入:“get-help about_provider”。)


        若要启用某个 Log*Event,键入值为 $true 的变量,例如:

            $LogCommandLifeCycleEvent

            - 或 -

            $LogCommandLifeCycleEvent = $true


        若要禁用某个事件类型,键入值为 $false 变量,例如:

            $LogCommandLifeCycleEvent = $false

        您启用的事件只对当前 Windows PowerShell 控制台有效。若要将配置应用到
        所有控制台,请将变量设置保存在 Windows PowerShell 配置文件中。


$MaximumAliasCount
------------------
        确定在 Windows PowerShell 会话中允许多少个别名。默认值 4096 对于大多数
        用户来说应该足够,但是可以将其调整为其他值以符合您的需求。

        有效值:1024 - 32768 (Int32)
        默认值:4096
      
        若要统计系统中别名的数量,请键入:

		(get-alias).count

$MaximumDriveCount
------------------
        确定在给定的会话中,允许多少个 Windows PowerShell 驱动器。其中包括 Windows PowerShell 提
        供程序公开的,且作为驱动器出现的文件系统驱动器和数据存储,如 Alias: 和 HKLM: 驱动器。

        有效值:1024 - 32768 (Int32)
        默认值:4096
      
        若要统计系统中驱动器的数量,请键入:

		(get-psdrive).count



$MaximumErrorCount
------------------
        确定在会话的错误历史记录中保存多少个错误。

        有效值:256 - 32768 (Int32)
        默认值:256

        表示每个被保留错误的对象存储在 $Error 自动变量中。此变量包含由错误记录对象组成的数组,
        每个对象对应一种错误。最新的错误是数组中的第一个对象 ($Error[0])。
      
        若要统计系统中错误的数量,请使用 $Error 数组的 Count 属性。键入:
		
		$Error.count

        若要显示某个特定错误,请使用数组表示法来显示该错误。例如,若要查看最新的错误,请键入:

                $Error[0]

        若要显示最早保留的错误,请键入:

                $Error[($Error.Count -1]

        若要显示 ErrorRecord 对象的属性,请键入:

                $Error[0] | format-list -property * -force

        在此命令中,使用 Force 参数将覆盖 ErrorRecord 对象的特殊格式设置,并恢复为传统格式。

        若要删除错误历史记录中的所有错误,请使用错误数组的 Clear 方法。

               PS> $Error.count
               17
               PS> $Error.clear()
               PS>
               PS> $Error.count
               0

       若要查找错误数组的所有属性和方法,请使用包含 InputObject 参数的 Get-Member cmdlet。
       当通过管道将对象集合传递给 Get-Member 时,Get-Member 显示集合中对象的属性和方法。
       在使用 Get-Member 的 InputObject 参数时,Get-Member 显示该集合的属性和方法。


$MaximumFunctionCount
------------------
        确定给定会话中允许多少个函数。

        有效值:1024 - 32768 (Int32)
        默认值:4096

        若要查看会话中的函数,请使用 Windows PowerShell Function 提供程序公开的 Windows 
        PowerShell Function: 驱动器。有关 Function 提供程序的详细信息,请键入"get-help 
        function"。

        若要列出当前会话中的函数,请键入:

            get-childitem function:

        若要统计当前会话中函数的数量,请键入:

            (get-childitem function:).count


$MaximumHistoryCount
------------------
        确定当前会话的命令历史记录中保存多少条命令。

        有效值:1 - 32768 (Int32)
        默认值:64

        若要确定当前保存在命令历史记录中的命令数量,请键入:
 
            (get-history).count

        若要查看会话历史记录中保存的命令,请使用 Get-History cmdlet。
        有关详细信息,请键入:“get-help about_history”。



$MaximumVariableCount
------------------
        确定给定会话中允许多少个变量,包括自动变量、首选项变量以及在命令和脚本中创建的变量。

        有效值:1024 - 32768 (Int32)
        默认值:4096

        若要查看会话中的变量,请使用 Get-Variable cmdlet 以及 Windows PowerShell 
        Variable: 驱动器和 Windows PowerShell Variable 提供程序的功能。有关 
        Variable 提供程序的信息,请键入"get-help variable"。

        若要获取系统上变量的当前数量,请键入:

            (get-variable).count



$OFS
----
        输出字段分隔符。指定在数组转换为字符串时,用来分隔数组元素的字符。

        有效值:任何字符串。
        默认值:空格

        默认情况下,$OFS 变量不存在,并且输出文件分隔符是空格,
        但是您可以添加此变量,并将其设置为任何字符串。

    示例

    下面的示例演示在将数组转换为字符串时使用空格来分隔值。此例中,
    一个整数数组存储在变量中,然后该变量被强制转型为字符串。

       PS> $array = 1,2,3                 # Store an array of 
       integers.       

       PS> [string]$array                 # Cast the array to a string.
       1 2 3                              # Spaces separate the elements


    若要更改分隔符,请添加 $OFS 变量,方法是为该变量赋值。该变量必须命名为 $OFS 才能起到正确的作用。

       PS> $OFS = "+"                     # Create $OFS and assign a "+"

       PS> [string]$array                 # Repeat the command
       1+2+3                              # Plus signs separate the elements


    若要恢复默认行为,可以将空格 (" ") 赋给 $OFS 的值或者删除该变量。
    下面的命令删除该变量,然后验证分隔符是否为空格。
        
       PS> Remove-Variable OFS            # Delete $OFS
       PS>

       PS> [string]$array                 # Repeat the command
       1 2 3                              # Spaces separate the elements

$OutputEncoding
---------------
       确定 Windows PowerShell 在将文本发送给其他应用程序时,所使用的字符编码方法。例如,如果应用程序
       将 Unicode 字符串返回给 Windows PowerShell,那么您可能需要更改该值,以便正确发送字符。

        有效值:   从编码类派生的对象,如 ASCIIEncoding、SBCSCodePageEncoding、UTF7Encoding、
        	   UTF8Encoding、UTF32Encoding 和 UnicodeEncoding。

        默认值:   ASCIIEncoding 对象 (System.Text.ASCIIEncoding)

    示例

       下面的示例演示,在针对使用 Unicode 字符的语言(如中文)本地化的计算机上,
       如何使 Windows 中的 FINDSTR 命令在 Windows PowerShell 程序中起作用。

       第一条命令查找 $OutputEncoding 的值。由于该值是编码对象,因此只显示其 EncodingName 属性。
         
          PS> $OutputEncoding.EncodingName # Find the current value
          US-ASCII

       在下面的示例中,FINDSTR 命令用于搜索 Test.txt 文件中存在的两个中文字符。当此 FINDSTR 命令在 
       Windows 命令提示符 (Cmd.exe) 下运行时,FINDSTR 在该文本文件中找到了这两个字符。但是,当在 
       Windows PowerShell 中运行同样的 FINDSTR 命令时,未找到这两个字符,这是因为 Windows 
       PowerShell 将它们作为 ASCII 文本(而不是 Unicode 文本)发送给 FINDSTR。

          PS> findstr <Unicode-characters>  # Use findstr to search.
          PS>                               # None found.

        
       为了使该命令在 Windows PowerShell 中也能使用,需要将 $OutputEncoding 的值设置为控制台的 
       OutputEncoding 属性的值,该值基于为 Windows 选择的区域设置。因为 OutputEncoding 是控制台的
       静态属性,所以在命令中使用双冒号 (::)。

          PS> $OutputEncoding = [console]::outputencoding
          PS>                               # Set the value equal to the
                                              OutputEncoding property 
                                              of the console.
          PS> $OutputEncoding.EncodingName               
          OEM United States
                                            # Find the resulting value.
     
       如此更改后,FINDSTR 命令就能找到这两个字符。

          PS> findstr <Unicode-characters>               
          test.txt:         <Unicode-characters>        

					# Use findstr to search.It find the
                                          characters in the text file.



$ProgressPreference
-------------------
	确定 Windows PowerShell 如何响应由脚本、cmdlet 或提供程序生成的进度更新,例如 Write-Progress 
	cmdlet 生成的进度栏。Write-Progress cmdlet 创建描述命令状态的进度栏。

        有效值:
	    Stop:               不显示进度栏,而是显示错误消息并停止执行。

     	    Inquire:            不显示进度栏。提示是否允许继续。如果按 Y 或 A 响应,则显示进度栏。

            Continue(默认):   显示进度栏,并继续执行。

            SilentlyContinue:	 执行命令,但是不显示进度栏。


$PSEmailServer
--------------
       指定用于发送电子邮件的默认电子邮件服务器。此首选项变量由发送
       电子邮件的 cmdlet(如 Send-MailMessage cmdlet)使用。


$PSSessionApplicationName
---------------------------
       指定使用 WS-Management 技术的远程命令的默认应用程序名称。

       系统默认应用程序名称为 WSMAN,但是可以使用首选项变量来更改该默认值。

       应用程序名称是连接 URI 中最后一个节点。例如,下面的示例 URI 中的应用程序名称为 WSMAN。

           http://Server01:8080/WSMAN


       当远程命令未指定连接 URI 或应用程序名称时,将使用默认应用程序名称。

       WinRM 服务使用该应用程序名称来选择为连接请求提供服务的侦听器。
       此参数的值应与远程计算机上的侦听器的 URLPrefix 属性值匹配。

       若要替代系统默认值以及此变量的值,并为特定会话选择其他应用程序名称,请使用 New-PSSession、
       Enter-PSSession 或 Invoke-Command cmdlet 的 ConnectionURI 或 ApplicationName 参数。

       此首选项变量是在本地计算机上设置的,但是它指定远程计算机上的侦听器。如果
       您指定的应用程序名称在远程计算机上不存在,那么建立会话的命令将失败。



$PSSessionConfigurationName
---------------------------
       指定用于在当前会话中创建的 PSSession 的默认会话配置。

       此首选项变量是在本地计算机上设置的,但是它指定位于远程计算机上的会话配置。

       $PSSessionConfigurationName 变量的值是完全限定资源 URI。

       默认值:

         https://schemas.microsoft.com/powershell/microsoft.powershell

       指示远程计算机上的 Microsoft.PowerShell 会话配置。

       如果只指定配置名称,那么将在前面加上以下架构 URI:

           https://schemas.microsoft.com/powershell/

             
       使用 New-PSSession、Enter-PSSession 或 Invoke-Command cmdlet 的 
       ConfigurationName 参数可替代该默认值,并为特定会话选择其他会话配置。

       可以随时更改此变量的值。更改时请记住,您选择的会话配置必须在远程
       计算机上存在。如果不存在,创建使用该会话配置的会话的命令将失败。

       此首选项变量不确定在远程用户创建连接到此计算机的会话时,使用哪个本地会话
       配置。但是,可以使用针对本地会话配置的权限来确定哪些用户可以使用它们。


$PSSessionOption
----------------
        确定远程会话中高级用户选项的默认值。这些选项首选项替代会话选项的系统默认值。

        还可以在创建会话的 cmdlet(如 New-PSSession、Enter-PSSession 和 Invoke-Command)
        中使用 SessionOption 参数来为特定远程会话设置自定义选项。SessionOption 参
        数值优先于系统默认值以及在此变量中设置的默认值。

        $PSSessionOption 变量包含 PSSessionOption 对象         
        (System.Management.Automation.Remoting.PSSessionObject)。该对象的每个
        属性表示一个会话选项。例如,NoCompression 属性在会话期间关闭数据压缩。

        若要创建 $PSSessionOption 首选项变量,请使用 New-PSSessionOption cmdlet。
        将输出保存在名为 $PSSessionOption 的变量中。

        例如,

            $PSSessionOption = New-PSSessionOption -NoCompression

        若要在每个 Windows PowerShell 会话中都使用 $PSSessionOption 首选项变量,请将创建 
        $PSSessionOption 变量的 New-PSSessionOption 命令添加到 Windows PowerShell 配置文件中。

        有关 New-PSSessionOption cmdlet 的详细信息,请参阅 New-PSSessionOption 
        的帮助主题。有关远程命令和会话的详细信息,请参阅 about_Remote 和 about_PSSessions。
        有关使用配置文件的详细信息,请参阅 about_Profiles。




$VerbosePreference
------------------
       	确定 Windows PowerShell 如何响应由脚本、cmdlet 或提供程序生成的详细消息,如 Write-
       	Verbose cmdlet 生成的消息。详细消息通常描述为执行某个命令而执行的操作。
        默认情况下不会显示详细消息,但是可通过更改 $VerbosePreference 的值来更改此行为。

        还可以使用 cmdlet 的 Verbose 通用参数来显示或隐藏特定命令的详细消息。
        有关详细信息,请键入“get-help about_commonparameters”。


        有效值:
	    Stop:               显示详细消息和错误消息,然后停止执行。

     	    Inquire:            显示详细消息,然后显示询问用户是否要继续的提示。

            Continue:           显示详细消息,然后继续执行。

            SilentlyContinue:不显示详细消息。继续执行。
	    (默认)

    示例

    下面的示例演示 $VerbosePreference 不同值的作用,以及如何使用 Verbose 通用参数来替代首选项值。
    
    下面的示例演示 SilentlyContinue 值的作用,该值是默认值。

        PS> $VerbosePreference             # Find the current value.
        SilentlyContinue

        PS> Write-Verbose "Verbose message test."              
        PS>                                # Write a verbose message.
                                           # Message is not displayed.

        PS> Write-Verbose "Verbose message test."-verbose
        VERBOSE: Verbose message test.
	                                   # Use the Verbose parameter.


    下面的示例演示 Continue 值的作用。

       PS> $VerbosePreference = "Continue"                    
                                           # Change the value to Continue.
        PS> Write-Verbose "Verbose message test."              
                                           # Write a verbose message.
        VERBOSE: Verbose message test.                         
                                           # Message is displayed.

        PS> Write-Verbose "Verbose message test." -verbose:$false
                                           # Use the Verbose parameter with
                                             a value of $false.
        PS>                                  
                                           # Message is not displayed.


    下面的示例演示 Stop 值的作用。

        PS> $VerbosePreference = "Stop"                        
                                           # Change the value to Stop.
        PS> Write-Verbose "Verbose message test."              
                                           # Write a verbose message.
        VERBOSE: Verbose message test.
        Write-Verbose : Command execution stopped because the shell variable "VerbosePreference"
        is set to Stop.
        At line:1 char:14
        + Write-Verbose  <<<< "Verbose message test."

       PS> Write-Verbose "Verbose message test." -verbose:$false
                                          # Use the Verbose parameter with
                                            a value of $false
       PS>                                  
                                          # Message is not displayed.

    下面的示例演示 Inquire 值的作用。


       PS> $VerbosePreference = "Inquire"                      
                                         # Change the value to Inquire.
       PS> Write-Verbose "Verbose message test."               
       VERBOSE: Verbose message test.
                                         # Write a verbose message.
       Confirm
       Continue with this operation?
       [Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend  [?] Help (default is "Y"): y
       PS>

       PS> Write-Verbose "Verbose message test." -verbose:$false
                                        # Use the Verbose parameter.
       PS>                              
                                        # Message is not displayed.


    
$WarningPreference
------------------
        确定 Windows PowerShell 如何响应由脚本、cmdlet 或提供程序生成的警告消息,
        如 Write-Warning cmdlet 生成的消息。

        默认情况下将显示警告消息,并且执行将继续,但是可通过
        更改 $WarningPreference 的值来更改此行为。

        也可以使用 cmdlet 的 WarningAction 通用参数来确定 Windows PowerShell 如何响应
        来自某个特定命令的警告。有关详细信息,请键入“get-help about_commonparameters”。


        有效值:
	    Stop:               显示警告消息和错误消息,然后停止执行。

     	    Inquire:            显示警告消息,然后提示是否允许继续。

            Continue(默认):   显示警告消息,然后继续执行。

            SilentlyContinue:	 不显示警告消息。继续执行。

    示例

    下面的示例演示 $WarningPreference 不同值的作用,以及如何使用 WarningAction 通用参数来替代首选项值。

    
    下面的示例演示 Continue 值的作用,该值是默认值。


            PS> $WarningPreference    # Find the current value.                           
            Continue                  

                                      # Write a warning message.
            PS> Write-Warning "This action can delete data."     
            WARNING: This action can delete data.
                                      	
                                      # Use the WarningAction parameter to 
                                      # suppress the warning for this command                                             
            PS> Write-Warning "This action can delete data." -warningaction silentlycontinue



   下面的示例演示 SilentlyContinue 值的作用。

            PS> $WarningPreference = "SilentlyContinue"           
                                      # Change the value to SilentlyContinue.
 
            PS> Write-Warning "This action can delete data."      
            PS>                        # Write a warning message.

       
            PS> Write-Warning "This action can delete data." -warningaction stop     
                                      # Use the WarningAction parameter to stop
                                      # processing when this command generates a
                                      # warning.         
            WARNING: This action can delete data.
            Write-Warning : Command execution stopped because the shell variable
            "WarningPreference" is set to Stop.
            At line:1 char:14
            + Write-Warning <<<<  "This action can delete data." -warningaction stop


    下面的示例演示 Inquire 值的作用。


           PS> $WarningPreference = "Inquire"                    
                                      # Change the value to Inquire.
           PS> Write-Warning "This action can delete data."   
                                      # Write a warning message.     
           WARNING: This action can delete data.

           Confirm
           Continue with this operation?
           [Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend  [?] Help (default is "Y"): y
           PS>

           PS> Write-Warning "This action can delete data." -warningaction silentlycontinue
           PS>                         # Use the WarningAction parameter to change the
                                       # response to a warning for the current command.


     下面的示例演示 Stop 值的作用。
           PS> $WarningPreference = "Stop"                       
                                     # Change the value to Stop.

           PS> Write-Warning "This action can delete data."      
                                     # Write a warning message.
           WARNING: This action can delete data.
           Write-Warning : Command execution stopped because the shell variable 
             "WarningPreference" is set to Stop.
           At line:1 char:14
           + Write-Warning  <<<< "This action can delete data."


           PS> Write-Warning "This action can delete data." -warningaction inquire
           WARNING: This action can delete data.

           Confirm
           Continue with this operation?
           [Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend  [?] Help (default is "Y"):                        
                                       # Use the WarningAction parameter to change the
                                       # response to a warning for the current command.




$WhatIfPreference
------------------
       	确定对于支持 WhatIf 的每一条命令是否自动启用 WhatIf。
       	当启用 WhatIf 时 cmdlet 将报告预期的命令结果,但不会执行命令。

        有效值:
	    0:(默认值)       不自动启用 WhatIf。若要手动启用它,请使用命令的 WhatIf 参数。
            

     	    1:                  WhatIf 对支持它的所有命令自动启用。用户可使用带 False 值 
				的 WhatIf 命令 (WhatIf:$false) 来手动将其禁用。

    详细说明

        如果某 cmdlet 支持 WhatIf,则该 cmdlet 将报告命令的预期结果而不会执行该命令。 
        例如,在响应 Remove-Item 命令时,Windows PowerShell 不会删除 test.txt 文件,
        而是报告该命令将删除什么。随后执行 Get-Childitem 命令可确认并未删除该文件。

              PS> remove-item test.txt
              What if: Performing operation "Remove-Item" on Target "Item: 
                C:\test.txt
              PS> get-childitem test.txt

              Directory: Microsoft.PowerShell.Core\FileSystem::C:


              Mode                LastWriteTime     Length     Name
              ----                -------------     ------     ----
              -a---         7/29/2006   7:15 PM         84     test.txt


    示例

    下面的这些示例演示 $WhatIfPreference 不同值的作用。它们还演示了如何
    使用 WhatIf cmdlet 参数来替代特定命令的首选项变量。
    
    下面的示例演示 0(不启用)值的作用,该值是默认值。

             PS> $whatifpreference                     
             0                         # Check the current value.

             PS> get-childitem test.txt | format-list FullName
             FullName : C:\test.txt
                                       # Verify that the file exists.

             PS> remove-item test.txt                  
             PS>                       # Delete the file.

             PS> get-childitem test.txt | format-list -property FullName
                                       # Verify that the file is deleted.

             Get-ChildItem : Cannot find path 'C:\test.txt' because it does not exist.
             At line:1 char:14
             + get-childitem  <<<< test.txt | format-list fullname


     下面的示例演示在 $WhatIfPreference 的值为 0 时,使用 WhatIf 参数的作用。

             PS> get-childitem test2.txt | format-list -property FullName 
             FullName : C:\test2.txt
                                      # Verify that the file exists.

             PS> remove-item test2.txt -whatif         
             What if: Performing operation "Remove File" on Target "C:\test2.txt".
                                      # Use the WhatIf parameter

             PS> get-childitem test2.txt | format-list -property FullName
             FullName : C:\test2.txt
                                      # Verify that the file was not deleted

    下面的示例演示 1(启用 WhatIf)值的作用。在使用 Remove-Item 删除
    文件时,Remove-Item 显示该命令将删除的文件的路径,但是不会删除该文件。


             PS> $whatifpreference = 1                 
             PS> $whatifpreference
             1                        # Change the value.
                                      
             PS> remove-item test.txt                  
             What if: Performing operation "Remove File" on Target "C:\test.txt".
                                      # Try to delete a file.

             PS> get-childitem test.txt | format-list FullName
             FullName : C:\test.txt
                                      # Verify that the file exists.

     下面的示例演示在 $WhatIfPreference 值为 1 时,如何删除文件。该例中使用值为 $false 的 WhatIf 
     参数。

             PS> remove-item test.txt -whatif:$false
                                      # Use the WhatIf parameter with $false.

     下面的示例表明某些 cmdlet 支持 WhatIf 行为,而其他 cmdlet 不支持这些行为。此例中,
     $WhatIfPreference 的值为 1(启用),并且执行了 Get-Process 命令(该命令不支持 WhatIf),
     但是 Stop-Process 命令执行 WhatIf 行为。
     可以使用值为 $false 的 WhatIf 参数来替代 Stop-Process 命令的 WhatIf 行为。

            PS> $whatifpreference = 1                  
                                     # Change the value to 1.
                                                      
            PS> get-process winword  
                                    # A Get-Process command completes.

            Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
            -------  ------    -----      ----- -----   ------     -- -----------
                234       8     6324      15060   154     0.36   2312 WINWORD


           PS> stop-process -name winword              
           What if: Performing operation "Stop-Process" on Target "WINWORD (2312)".
                                    # A Stop-Process command uses WhatIf.

           PS> stop-process -name winword  -whatif:$false
           PS>                      # WhatIf:$false overrides the preference.
           
           PS> get-process winword                     
           Get-Process : Cannot find a process with the name 'winword'. Verify the process name
            and call the cmdlet again.
           At line:1 char:12
           + get-process  <<<< winword
                                    # Verify that the process is stopped.


另请参阅

    about_Automatic_Variables
    about_CommonParameters
    about_Environment_Variables
    about_Profiles
    about_Remote
    about_Scopes
    about_Variables




目录