다음을 통해 공유


about_Preference_Variables

항목
    기본 설정 변수

간단한 설명
    Windows PowerShell의 동작을 사용자 지정하는 변수입니다. 

자세한 설명
    Windows PowerShell에는 해당 동작을 사용자 지정할 수 있는 변수 집합이 포함되어 있습니다. 이러한 "기본 설정 
    변수"는 GUI 기반 시스템의 옵션처럼 작동합니다.

    기본 설정 변수는 Windows PowerShell 운영 환경과 이 환경에서 실행되는 모든 명령에 영향을 줍니다. 대부분의 
    경우 cmdlet에는 특정 명령에 대한 기본 설정 동작을 재정의하는 데 사용할 수 있는 매개 변수가 있습니다.

    다음 표에는 기본 설정 변수와 해당 기본값이 정리되어 있습니다.

    변수                                 기본값
    --------                             -------------
    $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                       (None)
    $PSSessionApplicationName            WSMAN
    $PSSessionConfigurationName          https://schemas.microsoft.com/powershell/microsoft.powershell 
    $PSSessionOption                     (아래 참조)
    $VerbosePreference                   SilentlyContinue
    $WarningPreference                   Continue
    $WhatIfPreference                    0


    Windows PowerShell에는 사용자 기본 설정을 저장하는 다음 환경 변수가 포함되어 있습니다. 환경 변수에 
    대한 자세한 내용은 about_environment_variables를 참조하십시오.

    변수                                         
    ----                         
    PSModulePath                        

기본 설정 변수 작업
    이 설명서에서는 각 기본 설정 변수에 대해 설명합니다.

    특정 기본 설정 변수의 현재 값을 표시하려면 변수 이름을 입력합니다. 이에 대한 응답으로 Windows 
    PowerShell은 값을 제공합니다. 예를 들어 다음 명령은 $ConfirmPreference 변수의 값을 표시합니다.

        PS> $ConfirmPreference
        High

    변수 값을 변경하려면 대입문을 사용합니다. 예를 들어 다음 문은 $ConfirmPreference 변수에 값 "Medium"을 
    할당합니다.

        PS> $ConfirmPreference = "Medium"

    모든 변수와 마찬가지로 사용자가 설정하는 값은 현재 Windows PowerShell 창에 한정됩니다. 모든 
    Windows PowerShell 창에 적용하려는 변수 값은 Windows PowerShell 프로필에 추가합니다. 
    자세한 내용은 about_profiles를 참조하십시오.


원격으로 작동
   원격 컴퓨터에서 명령을 실행하는 경우 원격 컴퓨터의 Windows PowerShell 클라이언트에 설정된 기본 설정만 
   원격 명령에 적용됩니다. 예를 들어 원격 명령을 실행할 때 Windows PowerShell이 디버그 메시지에 응답하는 방식은 
   원격 컴퓨터의 $DebugPreference 변수 값에 따라 결정됩니다. 

   원격 명령에 대한 자세한 내용은 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 작업을 수행하기 전에 확인을 
        요청하는 메시지가 나타날 수 있습니다. 

        예를 들면 다음과 같습니다.

        PS> remove-item pref2.txt

            확인
            이 작업을 수행하시겠습니까?
            대상 "C:\pref2.txt"에서 "파일 제거" 작업을 수행합니다.
            [Y] 예 [A] 모두 예 [N] 아니요 [L] 모두 아니요 [S] 일시 중단 [?] 도움말(기본값은 "Y"):

        위험성 예상은 "ConfirmImpact"라고도 하는 cmdlet의 일부이며, 변경할 수 없습니다.

        시스템에 위험할 수 있는 Cmdlet에는 특정 명령에 대한 확인을 요청하거나 무시하는 데 사용할 수 있는 
        Confirm 매개 변수가 있습니다.

    대부분의 cmdlet은 기본 위험성 값 Medium을 사용하고 $ConfirmPreference의 기본값은 High이므로 
    자동 확인이 거의 이루어지지 않습니다. 그러나 $ConfirmPreference 값을 Medium이나 Low로 변경하여 자동 
    확인을 활성화할 수 있습니다. 

    예제
      이 예에서는 $ConfirmPreference 기본값의 효과를 보여 줍니다. High 값은 위험성이 높은 
      cmdlet 작업만 확인합니다. 대부분 작업의 위험성은 보통이므로 cmdlet의 Confirm 매개 변수를 
      사용하여 특정 명령에 대한 확인을 요청할 수 있지만 이러한 작업은 자동으로 확인되지 않습니다.

          PS> $confirmpreference              #변수의 현재 값을 가져옵니다. 
          High 
         
          PS> remove-item temp1.txt           #파일을 삭제합니다.
          PS>                                 #확인 없이 삭제됩니다. 
          PS> remove-item temp2.txt -confirm  #Confirm 매개 변수를 사용합니다.

          확인
          이 작업을 수행하시겠습니까?
          대상 "C:\temp2.txt"에서 "파일 제거" 작업을 수행합니다.
          [Y] 예 [A] 모두 예 [N] 아니요 [L] 모두 아니요 [S] 일시 중단 [?] 도움말(기본값은 "Y"):


       이 예에서는 Medium으로 $ConfirmPrefernce 값을 변경한 효과를 보여 줍니다. 대부분의 
       cmdlet 작업은 위험성이 보통이므로 자동으로 확인됩니다. 특정 명령에 대한 확인 프롬프트를 
       표시하지 않으려면 값이 $false인 Confirm 매개 변수를 사용해야 합니다.

            
          PS> $confirmpreference = "Medium" 
                                     #$ConfirmPreference 값을 변경합니다. 
          PS> remove-item temp2.txt
                                     #파일 트리거 삭제를 확인합니다. 
          확인
          이 작업을 수행하시겠습니까?
          대상 "C:\temp2.txt"에서 "파일 제거" 작업을 수행합니다.
          [Y] 예 [A] 모두 예 [N] 아니요 [L] 모두 아니요 [S] 일시 중단 [?] 도움말(기본값은 "Y"):
    

          PS> remove-item temp3.txt -confirm:$false  #Confirm 매개 변수를 
                                  사용하여 확인 메시지를 표시하지 않습니다. 
          PS>

$DebugPreference
------------------
    Windows PowerShell에서 스크립트, cmdlet, 공급자 또는 명령줄의 Write-Debug 명령에 의해 생성된 디버그 
    메시지에 응답하는 방식을 결정합니다. 

        일부 cmdlet에는 디버그 메시지가 표시됩니다. 이 메시지는 프로그래머와 기술 지원 전문가를 위한 매우 기술적인 
        메시지입니다. 기본적으로 디버그 메시지는 표시되지 않지만 $DebugPreference 값을 변경하여 디버그 메시지를 
        표시할 수 있습니다.
        
        cmdlet의 Debug 일반 매개 변수를 사용하여 특정 명령에 대한 디버그 메시지를 표시하거나 숨길 수도 있습니다. 
        자세한 내용을 보려면 "get-help about_commonparameters"를 입력하십시오.

        유효한 값은 다음과 같습니다.
        Stop:               디버그 메시지를 표시하고 실행을 중지합니다. 콘솔에 오류를 씁니다.

            Inquire:            디버그 메시지를 표시하고 계속할지 여부를 묻습니다.

            Continue:           디버그 메시지를 표시하고 실행을 계속합니다.

            SilentlyContinue    효과가 없습니다. 디버그 메시지가 표시되지 않고 중단 없이 
            (기본값):           실행이 계속됩니다.
             

    예제
    
    다음 예에서는 명령줄에 Write-Debug 명령을 입력할 때 $DebugPreference 값 변경의 효과를 보여 
    줍니다. cmdlet 및 스크립트에 의해 생성된 디버그 메시지를 비롯한 모든 디버그 메시지가 영향을 받습니다. 또한 이 
    예에서는 Debug 일반 매개 변수의 사용 방법을 보여 줍니다. Debug 일반 매개 변수는 단일 명령과 관련된 디버그 
    메시지를 표시하거나 숨깁니다.

    이 예에서는 기본값 "SilentlyContinue"의 효과를 보여 줍니다. 디버그 메시지가 표시되지 않고 처리가 계속됩니다. 
    마지막 명령은 Debug 매개 변수를 사용하여 단일 명령에 대한 기본 설정을 재정의합니다.

        PS> $debugpreference                    # $DebugPreference의
        SilentlyContinue                          현재 값을 가져옵니다.

        PS> write-debug "Hello, World"
        PS>                                     # 디버그 메시지가 표시되지 않습니다.

        PS> write-debug "Hello, World" -Debug   # Debug 매개 변수를 사용합니다.
        DEBUG: Hello, World                     # 디버그 메시지가 요청됩니다.
        
       displayed and confirmation
    확인?
        이 작업을 계속하시겠습니까?
        [Y] 예 [A] 모두 예 [H] 명령 중지 [S] 일시 중단 [?] 도움말(기본값은 "Y"):

   
    이 예에서는 "Continue" 값의 효과를 보여 줍니다. 마지막 명령은 값이 $false인 Debug 매개 변수를 
    사용하여 단일 명령에 대한 메시지를 표시하지 않습니다.

        PS> $debugpreference = "Continue"  # 값을 "Continue"로 변경합니다.

        PS> write-debug "Hello, World"
        DEBUG: Hello, World                 # 디버그 메시지가 표시되고 처리가 계속됩니다.
        PS>


        PS> write-debug "Hello, World" -Debug:$false  
                                            # 값이 false인 Debug 매개 변수를 
                                              사용합니다.
        PS>                                 # 디버그 메시지가 표시되지 않습니다.

        
    이 예에서는 "Stop" 값의 효과를 보여 줍니다. 마지막 명령은 값이 $false인 Debug 매개 변수를 사용하여 
    단일 명령에 대한 메시지를 표시하지 않습니다.

        PS> $debugpreference = "Stop"       # 값을 "Stop"으로 변경합니다.
        PS> write-debug "Hello, World"
        DEBUG: Hello, World
        Write-Debug : 셸 변수 "DebugPreference"이(가) Stop으로 설정되어 있으므로 명령 
        실행이 중지되었습니다.
        줄:1 문자:12
        + write-debug <<<< "Hello, World"

        PS> write-debug "Hello, World" -Debug:$false  
                                            # 값이 $false인 Debug 매개 변수를 
                                              사용합니다.
        PS>                                 # 디버그 메시지가 표시되지 않고 처리가 중지되지 않습니다.
      

    이 예에서는 "Inquire" 값의 효과를 보여 줍니다. 마지막 명령은 값이 $false인 Debug 매개 변수를 
    사용하여 단일 명령에 대한 메시지를 표시하지 않습니다.

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

        확인
        이 작업을 계속하시겠습니까?
        [Y] 예 [A] 모두 예 [H] 명령 중지 [S] 일시 중단 [?] 도움말(기본값은 "Y"):

        PS> write-debug "Hello, World" -Debug:$false  
                                            # 값이 $false인 Debug 매개 변수를 
                                              사용합니다.
        PS>                                 # 디버그 메시지가 표시되지 않고 
                          중단 없이 처리가 계속됩니다.


$ErrorActionPreference
----------------------
    Windows PowerShell에서 Write-Error cmdlet에 의해 생성된 오류와 같은 명령줄, 스크립트, 
    cmdlet 또는 공급자의 종료되지 않는 오류(cmdlet 처리를 중지하지 않는 오류)에 응답하는 방식을 결정합니다. 

        cmdlet의 ErrorAction 일반 매개 변수를 사용하여 특정 명령에 대한 기본 설정을 재정의할 수도 
        있습니다. 자세한 내용을 보려면 "get-help about_commonparameters"를 입력하십시오.


        유효한 값은 다음과 같습니다.
        Stop:               오류 메시지를 표시하고 실행을 중지합니다. 

            Inquire:            오류 메시지를 표시하고 계속할지 여부를 묻습니다.

            Continue:           오류 메시지를 표시하고 실행을 계속합니다.

            SilentlyContinue    효과가 없습니다. 오류 메시지가 표시되지 않고 중단 없이 
            (기본값):           실행이 계속됩니다.


       $ErrorActionPreference와 ErrorAction 일반 매개 변수 모두 Windows 
       PowerShell에서 종료 오류(cmdlet 처리를 중지하는 오류)에 응답하는 방식에 영향을 주지 않습니다.

       ErrorAction 일반 매개 변수에 대한 자세한 내용을 보려면 "get-help about_commonpara
       meters"를 입력하십시오.


    예제

    이 예에서는 다른 $ErrorActionPreference 값 사용의 효과와 ErrorAction 일반 매개 변수를 
    사용하여 단일 명령에 대한 기본 설정을 재정의하는 방법을 보여 줍니다. ErrorAction 매개 변수의 유효한 값은 
    $ErrorActionPreference 변수와 동일합니다.
    
    이 예에서는 기본값인 Continue 값의 효과를 보여 줍니다.

        PS> $erroractionpreference                      
        Continue        # 기본 설정 값을 표시합니다.
                   
        PS> write-error "Hello, World"                  
                                # 종료되지 않는 오류를 생성합니다.

        write-error "Hello, World" : Hello, World        
                # 오류 메시지가 표시되고 실행이 계속됩니다.

        PS> write-error "Hello, World" -ErrorAction:SilentlyContinue
                                # 값이 \\"SilentlyContinue\\"인 ErrorAction 
                                매개 변수를 사용합니다.
        PS>                                             
                                # 오류 메시지가 표시되지 않고 실행이 계속됩니다.

    이 예에서는 SilentlyContinue 값의 효과를 보여 줍니다.

        C:\PS> $warningpreference = "SilentlyContinue"
                                # 기본 설정 값을 변경합니다.
        PS> write-error "Hello, World"                  
                                #  오류 메시지를 생성합니다.
        PS>                     
                                # 오류 메시지가 표시되지 않습니다.
        PS> write-error "Hello, World" -erroraction:continue
                                # 값이 \\"Continue\\"인 ErrorAction 매개 변수를 사용합니다.
        write-error "Hello, World" -erroraction:continue : Hello, World 
                # 오류 메시지가 표시되고 실행이 계속됩니다.

       
    이 예에서는 실제 오류의 효과를 보여 줍니다. 이 경우 명령은 존재하지 않는 파일인 nofile.txt를 가져옵니다. 
    또한 이 예에서는 ErrorAction 일반 매개 변수를 사용하여 기본 설정을 재정의합니다.

        PS> $erroractionpreference                      
        SilentlyContinue        # 기본 설정 값을 표시합니다.   

        PS> get-childitem -path nofile.txt
        PS>                     # 오류 메시지가 표시되지 않습니다.

        PS> $ErrorActionPreference = "Continue" 
                                # 값을 Continue로 변경합니다.

        PS> get-childitem -path nofile.txt
        Get-ChildItem : 'C:\nofile.txt' 경로는 존재하지 않으므로 찾을 수 없습니다.
        줄:1 문자:4
        + get-childitem <<<< nofile.txt

        PS> get-childitem -path nofile.txt -erroraction SilentlyContinue
                                # ErrorAction 매개 변수를 사용합니다.
        PS>
                                # 오류 메시지가 표시되지 않습니다.
  
        PS> $ErrorActionPreference = "Inquire"          
                                # 값을 Inquire로 변경합니다.
        PS> get-childitem -path nofile.txt

        확인
        'C:\nofile.txt' 경로는 존재하지 않으므로 찾을 수 없습니다.
        [Y] 예 [A] 모두 예 [H] 명령 중지 [S] 일시 중단 [?] 도움말(기본값은 "Y"): y 
        Get-ChildItem : 'C:\nofile.txt' 경로는 존재하지 않으므로 찾을 수 없습니다.
        줄:1 문자:4
        + get-childitem <<<< nofile.txt

        PS> $ErrorActionPreference = "Continue"                  
                                # 값을 Continue로 변경합니다.
        PS> Get-Childitem nofile.txt -erroraction "Inquire"   
                                # ErrorAction 일반 매개 변수를 사용하여 기본 설정 값을 
                                  재정의합니다.

        확인
        'C:\nofile.txt' 경로는 존재하지 않으므로 찾을 수 없습니다.          [Y] 
        예 [A] 모두 예 [H] 명령 중지 [S] 일시 중단 [?] 도움말(기본값은 "Y"):


$ErrorView
----------
        Windows PowerShell의 오류 메시지 표시 형식을 결정합니다. 

        유효한 값은 다음과 같습니다.
        NormalView(기본값):         대부분의 사용자를 위한 자세히 보기입니다. 오류에 대한 
                        설명, 오류와 관련된 개체 이름 및 명령에서 오류를 발생시킨 
                        단어를 가리키는 화살표(<<<<)로 구성됩니다.

            CategoryView:               생산 환경을 위한 간단한 구조화된 보기입니다. 형식: 
                        {Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}

        CategoryView의 필드에 대한 자세한 내용은 Windows PowerShell SDK의 
        "ErrorCategoryInfo class(ErrorCategoryInfo 클래스)"를 참조하십시오.
        
    예제

    이 예에서는 ErrorView 값의 효과를 보여 줍니다.

    이 예에서는 $ErrorView 값이 NormalView인 경우 오류가 어떻게 표시되는지 보여 줍니다. 이 경우 
    존재하지 않는 파일을 찾는 데 Get-ChildItem 명령이 사용됩니다.

        PS> $ErrorView                         # 값을 확인합니다.
        NormalView

        PS> get-childitem nofile.txt           # 존재하지 않는 파일을 찾습니다.
        Get-ChildItem : 'C:\nofile.txt' 경로는 존재하지 않으므로 찾을 수 없습니다.
        줄:1 문자:14
        + get-childitem <<<< nofile.txt

    이 예에서는 $ErrorView 값이 CategoryView인 경우 동일한 오류가 어떻게 표시되는지 보여 줍니다.

        PS> $ErrorView = "CategoryView"        # 값을 
                                                 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

        예외:  System.Management.Automation.ItemNotFoundException: 
               'C:\nofile.txt' 경로는 존재하지 않으므로 찾을 수 없습니다. 위치: 
               System.Management.Automation.SessionStateInternal.GetChildItems(문자열 
               경로, 부울 재귀, CmdletProviderContext 컨텍스트) 위치: System.Management.
               Automation.ChildItemCmdletProviderIntrinsics.Get(문자열
               경로, 부울 재귀, CmdletProviderContext 컨텍스트) 위치: 
               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 값이 열거 항목 수보다 작으면 줄임표(...)가 추가되어 항목이 
        표시되지 않음을 나타냅니다.

        유효한 값: 정수(Int32)
        기본값: 4

    예제

        이 예에서는 $FormatEnumerationLimit 변수를 사용하여 열거 항목 표시를 개선하는 방법을 보여 
        줍니다. 

        이 예의 명령에서 생성하는 테이블에는 실행 중인 서비스에 대한 그룹과 중지된 서비스에 대한 그룹의 컴퓨터에서 
        실행 중인 서비스가 모두 나열됩니다. 이 예에서는 Get-Service 명령을 사용하여 모든 서비스를 가져온 다음 
        파이프라인을 통해 Group-Object cmdlet으로 결과를 보냅니다. 이 cmdlet은 서비스 상태별로 결과를 그룹화합니다. 

        결과 표시는 Name 열에 상태가 나열되고 Group 열에 해당 상태의 프로세스가 나열되는 테이블입니다. 열 레이블을 
        변경하려면 해시 테이블을 사용합니다. 자세한 내용은 "get-help format-table -examples"의 예제를 참조하십시오. 

        각 상태에 대한 Group 열에는 최대 4개의 서비스가 나열됩니다. 보다 많은 항목이 나열되도록 
        $FormatEnumerationLimit 값을 1000으로 늘립니다.

        이제 결과 표시에서 Group 열의 목록이 줄 길이로 제한됩니다. 예제의 마지막 명령에서 
        Format-Table의 Wrap 매개 변수를 사용하여 각 상태 그룹의 모든 프로세스를 표시합니다.
         

        PS> $formatenumerationlimit         # 현재 값을 찾습니다.
        4
        
        PS> get-service | group-object -property status           
                                            # 상태별로 그룹화된 모든 서비스를 나열합니다.

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

                                           # 목록은 4개 항목 다음에 잘립니다.


        PS> $formatenumerationlimit = 1000
                                           # 제한을 1000으로 늘립니다.
        
        PS> get-service | group-object -property status           
                                           # 명령을 반복합니다.

        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
                                           # Wrap 매개 변수를 추가합니다.

        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

       오류 배열의 모든 속성과 메서드를 찾으려면 Get-Member cmdlet과 InputObject 매개 변수를 
       사용합니다. 개체의 컬렉션을 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 변수: 드라이브 
        및 Windows PowerShell 변수 공급자의 기능을 사용합니다. 변수 공급자에 대한 자세한 내용을 
        보려면 "get-help variable"을 입력하십시오.

        시스템의 현재 변수 수를 계산하려면 다음과 같이 입력하십시오.

            (get-variable).count



$OFS
----
        출력 필드 구분 기호입니다. 배열이 문자열로 변환될 때 배열 요소를 구분하는 문자를 지정합니다. 

        유효한 값: 모든 문자열
        기본값: 공백

        기본적으로 $OFS 변수가 없으며 출력 파일 구분 기호는 공백이지만 이 변수를 추가하고 임의 문자로 설정할 수 
        있습니다.

    예제

    이 예에서는 배열을 문자열로 변환할 때 공백이 값을 구분하는 데 사용됨을 보여 줍니다. 이 경우 정수 배열이 변수에 
    저장된 다음 변수가 문자열로 캐스팅됩니다.

       PS> $array = 1,2,3                 # 정수 배열을 저장합니다.       

       PS> [string]$array                 # 배열을 문자열로 캐스팅합니다.
       1 2 3                              # 요소가 공백으로 구분됩니다.


    구분 기호를 변경하려면 구분 기호에 값을 할당하여 $OFS 변수를 추가합니다. 변수 이름을 $OFS로 지정해야 제대로 
    작동합니다. 

       PS> $OFS = "+"                     # $OFS를 만들고 "+"를 할당합니다.

       PS> [string]$array                 # 명령을 반복합니다.
       1+2+3                              # 요소가 더하기 기호로 구분됩니다.


     $OFS 값에 공백(" ")을 할당하거나 변수를 삭제하여 기본 동작을 복원할 수 있습니다. 이 명령은 변수를 삭제하고 구분 
     기호가 공백임을 확인합니다.
        
       PS> Remove-Variable OFS            # $OFS를 삭제합니다.
       PS>

       PS> [string]$array                 # 명령을 반복합니다.
       1 2 3                              # 요소가 공백으로 구분됩니다. 

$OutputEncoding
---------------
       Windows PowerShell에서 텍스트를 다른 응용 프로그램으로 보낼 때 사용되는 문자 인코딩 방법을 
       결정합니다. 예를 들어 응용 프로그램이 유니코드 문자열을 Windows PowerShell에 반환하는 경우 
       문자를 올바르게 보내도록 값을 변경해야 할 수 있습니다.

        유효한 값: ASCIIEncoding, SBCSCodePageEncoding, UTF7Encoding, UTF8Encoding, 
                   UTF32Encoding, UnicodeEncoding과 같이 인코딩 클래스에서 파생된 개체입니다.

        기본값: ASCIIEncoding 개체(System.Text.ASCIIEncoding)

    예제

       이 예에서는 중국어 등의 유니코드 문자를 사용하는 언어로 지역화된 컴퓨터의 Windows PowerShell에서 
       Windows의 FINDSTR 명령이 작동하도록 만드는 방법을 보여 줍니다. 

       첫 번째 명령은 $OutputEncoding 값을 찾습니다. 값이 인코딩 개체이므로 해당 EncodingName 
       속성만 표시됩니다.
         
          PS> $OutputEncoding.EncodingName  # 현재 값을 찾습니다.
          US-ASCII

       이 예에서 FINDSTR 명령은 Test.txt 파일에 있는 두 개의 중국어 문자를 검색하는 데 사용됩니다. 
       이 FINDSTR 명령이 Windows 명령 프롬프트(Cmd.exe)에서 실행되면 FINDSTR는 텍스트 파일에서 
       문자를 찾습니다. 그러나 Windows PowerShell에서 FINDSTR 명령을 실행하면 문자가 
       FINDSTR에 유니코드 텍스트 대신 ASCII 텍스트로 보내지므로 문자를 찾을 수 없습니다.

          PS> findstr <Unicode-characters>  # findstr을 사용하여 검색합니다.
          PS>                               # 찾을 수 없습니다.

        
       Windows PowerShell에서 명령이 작동하게 하려면 Windows에 대해 선택한 로캘을 기준으로 하는 콘솔의 
       OutputEncoding 속성 값으로 $OutputEncoding 값을 설정합니다. OutputEncoding은 콘솔의 
       정적 속성이므로 명령에 이중 콜론(::)을 사용합니다.

          PS> $OutputEncoding = [console]::outputencoding
          PS>                               # 값을 콘솔의
                                              OutputEncoding 속성과 같게 설정합니다.
          PS> $OutputEncoding.EncodingName               
          OEM 영어
                                            # 결과 값을 찾습니다.
     
       이 값을 변경했으므로 FINDSTR 명령이 문자를 찾습니다.

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

                    # findstr을 사용하여 검색합니다. 텍스트 파일에서
                                          문자를 찾습니다.



$ProgressPreference
-------------------
    Windows PowerShell에서 Write-Progress cmdlet에 의해 생성된 진행률 표시줄과 같이 스크립트, 
    cmdlet 또는 공급자가 생성한 진행률 업데이트에 응답하는 방식을 결정합니다. Write-Progress cmdlet은 
    명령의 상태를 설명하는 진행률 표시줄을 만듭니다.

        유효한 값은 다음과 같습니다.
        Stop:              진행률 표시줄을 표시하지 않습니다. 대신 오류 메시지를 표시하고 실행을 
                   중지합니다.

            Inquire:           진행률 표시줄을 표시하지 않습니다. 작업을 계속할 권한을 묻는 메시지를 
                               표시합니다. Y 또는 A로 응답하면 진행률 표시줄을 표시합니다.

            Continue(기본값):  진행률 표시줄을 표시하고 실행을 계속합니다.

            SilentlyContinue:  명령을 실행하지만 진행률 표시줄을 표시하지 않습니다.


$PSEmailServer
--------------
       전자 메일 메시지를 보낼 때 사용되는 기본 전자 메일 서버를 지정합니다. 이 기본 설정 변수는 
       Send-MailMessage cmdlet과 같은 전자 메일을 보내는 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
---------------------------
       현재 세션에서 만든 PSSessions에 사용되는 기본 세션 구성을 지정합니다.

       이 기본 설정 변수는 로컬 컴퓨터에 설정되지만 원격 컴퓨터에 있는 세션 구성을 지정합니다. 

       $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
----------------
        원격 세션의 고급 사용자 옵션에 대한 기본값을 설정합니다. 이러한 옵션 기본 설정은 세션 옵션에 대한 시스템 
        기본값을 재정의합니다. 

        New-PSSession, Enter-PSSession 및 Invoke-Command처럼 세션을 만드는 
        cmdlet에 SessionOption 매개 변수를 사용하여 특정 원격 세션에 대한 사용자 지정 옵션을 설정할 
        수도 있습니다. SessionOption 매개 변수 값은 시스템 기본값과 이 변수에 설정된 기본값보다 우선합니다.

        $PSSessionOption 변수에는 PSSessionOption 개체가 있습니다.        
        (System.Management.Automation.Remoting.PSSessionObject). 개체의 각 속성은 세션 
        옵션을 나타냅니다. 예를 들어 NoCompression 속성은 세션 중에 데이터 압축을 해제합니다.

        $PSSessionOption 기본 설정 변수를 만들려면 New-PSSessionOption cmdlet을 사용합니다. 
        $PSSessionOption이라는 변수에 출력을 저장합니다. 

        예를 들면 다음과 같습니다.

            $PSSessionOption = New-PSSessionOption -NoCompression 

        모든 Windows PowerShell 세션에 $PSSessionOption 기본 설정 변수를 사용하려면 
        Windows PowerShell 프로필에 $PSSessionOption 변수를 만드는 
        New-PSSessionOption 명령을 추가합니다.

        New-PSSessionOption cmdlet에 대한 자세한 내용은 New-PSSessionOption에 
        대한 도움말 항목을 참조하십시오. 원격 명령 및 세션에 대한 자세한 내용은 about_Remote 및 
        about_PSSessions를 참조하십시오. 프로필 사용에 대한 자세한 내용은 about_Profiles를 참조하십시오.




$VerbosePreference
------------------
        Windows PowerShell에서 Write-Verbose cmdlet에 의해 생성된 메시지와 같이 
        스크립트, cmdlet 또는 공급자가 생성한 자세한 정보 메시지에 응답하는 방식을 결정합니다. 일반적으로 자세한 
        정보 메시지는 명령 실행을 위해 수행된 동작을 설명합니다. 
        기본적으로 자세한 정보 메시지는 표시되지 않지만 $VerbosePreference 값을 변경하여 이 동작을 
        바꿀 수 있습니다.

        cmdlet의 Verbose 일반 매개 변수를 사용하여 특정 명령에 대한 자세한 정보 메시지를 표시하거나 숨길 
        수도 있습니다. 자세한 내용을 보려면 "get-help about_commonparameters"를 입력하십시오.


        유효한 값은 다음과 같습니다.
        Stop:                      자세한 정보 메시지와 오류 메시지를 표시한 다음 실행을 중지합니다.

            Inquire:                   자세한 정보 메시지를 표시한 다음 계속할지 여부를 묻는 
                                       메시지를 표시합니다.

            Continue:                  자세한 정보 메시지를 표시한 다음 실행을 계속합니다.

            SilentlyContinue(기본값):  자세한 정보 메시지를 표시하지 않습니다. 실행을 계속합니다.

    예제

    이 예에서는 다른 $VerbosePreference 값 사용의 효과와 Verbose 일반 매개 변수를 사용하여 기본 
    설정 값을 재정의하는 방법을 보여 줍니다.
    
    이 예에서는 기본값인 SilentlyContinue 값의 효과를 보여 줍니다.

        PS> $VerbosePreference             # 현재 값을 찾습니다.
        SilentlyContinue

        PS> Write-Verbose "Verbose message test."              
        PS>                                # 자세한 정보 메시지를 작성합니다.
                                           # 메시지가 표시되지 않습니다.

        PS> Write-Verbose "Verbose message test." -verbose   
        자세한 정보 표시: Verbose message test.
                                       # Verbose 매개 변수를 사용합니다.


    이 예에서는 Continue 값의 효과를 보여 줍니다.

        PS> $VerbosePreference = "Continue"                    
                                           # 값을 Continue로 변경합니다.
        PS> Write-Verbose "Verbose message test."              
                                           # 자세한 정보 메시지를 작성합니다.
        자세한 정보 표시: Verbose message test.                          
                                           # 메시지가 표시됩니다.

        PS> Write-Verbose "Verbose message test." -verbose:$false
                                           # 값이 $false인 Verbose 매개 
                                             변수를 사용합니다.
        PS>                                  
                                           # 메시지가 표시되지 않습니다.


    이 예에서는 Stop 값의 효과를 보여 줍니다.

        PS> $VerbosePreference = "Stop"                        
                                           # 값을 Stop으로 변경합니다.
        PS> Write-Verbose "Verbose message test."              
                                           # 자세한 정보 메시지를 작성합니다.
        자세한 정보 표시: Verbose message test.
        Write-Verbose : 셸 변수 "VerbosePreference"이(가) Stop으로 설정되어 있으므로 
        명령 실행이 중지되었습니다.
        줄:1 문자:14
        + Write-Verbose <<<< "Verbose message test."

       PS> Write-Verbose "Verbose message test." -verbose:$false
                                          # 값이 $false인 Verbose 매개 변수를 
                                            사용합니다.
       PS> 
                                          # 메시지가 표시되지 않습니다.

    이 예에서는 Inquire 값의 효과를 보여 줍니다.

       PS> $VerbosePreference = "Inquire"                      
                                         # 값을 Inquire로 변경합니다.
       PS> Write-Verbose "Verbose message test."               
       자세한 정보 표시: Verbose message test.
                                         # 자세한 정보 메시지를 작성합니다.
       확인
       이 작업을 계속하시겠습니까?
       [Y] 예 [A] 모두 예 [H] 명령 중지 [S] 일시 중단 [?] 도움말(기본값은 "Y"): y 

       PS> Write-Verbose "Verbose message test." -verbose:$false
                                        # Verbose 매개 변수를 사용합니다.
       PS>                              
                                        # 메시지가 표시되지 않습니다.


    
$WarningPreference
------------------
        Windows PowerShell이 Write-Warning cmdlet에 의해 생성된 메시지와 같이 
        스크립트, cmdlet 또는 공급자가 생성한 경고 메시지에 응답하는 방식을 결정합니다.

        기본적으로 경고 메시지가 표시되고 실행이 계속되지만 $WarningPreference 값을 변경하여 
        이 동작을 바꿀 수 있습니다.

        cmdlet의 WarningAction 일반 매개 변수를 사용하여 Windows PowerShell에서 특정 
        명령의 경고에 응답하는 방식을 결정할 수도 있습니다. 자세한 내용을 보려면 "get-help 
        about_commonparameters"를 입력하십시오.


        유효한 값은 다음과 같습니다.
        Stop:               경고 메시지와 오류 메시지를 표시한 다음 실행을 중지합니다.

            Inquire:            경고 메시지를 표시한 다음 작업을 계속할 권한을 묻는 메시지를 
            표시합니다. 

            Continue(기본값):  경고 메시지를 표시한 다음 실행을 계속합니다.

            SilentlyContinue:  경고 메시지를 표시하지 않습니다. 실행을 계속합니다.

    예제

    이 예에서는 다른 $WarningPreference 값 사용의 효과와 WarningAction 일반 매개 변수를 
    사용하여 기본 설정 값을 재정의하는 방법을 보여 줍니다.

    
    이 예에서는 기본값인 Continue 값의 효과를 보여 줍니다.

            PS> $WarningPreference    # 현재 값을 찾습니다.                           
            Continue                  

                                      # 경고 메시지를 작성합니다.
            PS> Write-Warning "This action can delete data."   
            경고: This action can delete data.
                                        
                                      # WarningAction 매개 변수를 사용하여 
                                      # 이 명령에 대한 경고를 표시하지 않을 수 있습니다. 
            PS> Write-Warning "This action can delete data." -warningaction silentlycontinue   



   이 예에서는 SilentlyContinue 값의 효과를 보여 줍니다.

            PS> $WarningPreference = "SilentlyContinue"           
                                      # SilentlyContinue 값을 변경합니다.
 
            PS> Write-Warning "This action can delete data."   
            PS>                       # 경고 메시지를 작성합니다.

       
            PS> Write-Warning "This action can delete data." -warningaction stop   
                                      # 이 명령이 '경고: 이 작업으로 인해 
                                      # 데이터가 삭제될 수 있습니다.'를 생성하면 
                                      WarningAction 매개 변수를 사용하여 처리를 
                                      중지합니다. 
            Write-Warning : 셸 변수 "WarningPreference"이(가) Stop으로 설정되어 
            있으므로 명령 실행이 중지되었습니다.
            줄:1 문자:14
            + Write-Warning <<<< "This action can delete data." -warningaction stop 


    이 예에서는 Inquire 값의 효과를 보여 줍니다.

           PS> $WarningPreference = "Inquire"                    
                                      # 값을 Inquire로 변경합니다.
           PS> Write-Warning "This action can delete data."  
                                      # 경고 메시지를 작성합니다.   경고: This 
                                      action can delete data.

           확인
           이 작업을 계속하시겠습니까?
           [Y] 예 [A] 모두 예 [H] 명령 중지 [S] 일시 중단 [?] 도움말(기본값은 "Y"): y 
           PS>

           PS> Write-Warning "This action can delete data." -warningaction silentlycontinue
           PS>                         # WarningAction 매개 변수를 사용하여
                                       # 현재 명령에 대한 경고에 응답하는 방식을 변경합니다.



     이 예에서는 Stop 값의 효과를 보여 줍니다.

           PS> $WarningPreference = "Stop"                       
                                     # 값을 Stop으로 변경합니다.

           PS> Write-Warning "This action can delete data."   
                                     # 경고 메시지를 작성합니다.
           경고: This action can delete data.
           Write-Warning : 셸 변수 "WarningPreference"이(가) Stop으로 설정되어 
           있으므로 명령 실행이 중지되었습니다.
           줄:1 문자:14
           + Write-Warning <<<< "This action can delete data."


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

           확인
           이 작업을 계속하시겠습니까?
           [Y] 예 [A] 모두 예 [H] 명령 중지 [S] 일시 중단 [?] 도움말(기본값은 "Y"):
                                     # WarningAction 매개 변수를 사용하여 
                                     # 현재 명령에 대한 경고에 응답하는 방식을 변경합니다.


$WhatIfPreference
------------------
        WhatIf가 지원하는 모든 명령에 대해 자동으로 사용되는지 여부를 결정합니다. WhatIf가 사용되는 경우 
        cmdlet은 명령의 예상 효과를 보고하지만 명령을 실행하지 않습니다. 

        유효한 값은 다음과 같습니다.
        0:(기본값)          WhatIf가 자동으로 사용되지 않습니다. 수동으로 WhatIf를 
                            사용하려면 명령의 WhatIf 매개 변수를 사용합니다.
            

            1:                  WhatIf가 지원하는 모든 명령에 대해 자동으로 사용됩니다. 사용자는 
                            값이 False인 WhatIf 명령으로 WhatIf를 사용하지 않도록 수동으로 설정할 수 
                            있습니다(WhatIf:$false).

    자세한 설명

        cmdlet이 WhatIf를 지원하면 cmdlet은 명령을 실행하는 대신 명령의 예상 효과를 보고합니다. 예를 
        들어 Windows PowerShell에서는 Remove-Item 명령에 대한 응답으로 test.txt 파일을 
        삭제하는 대신 삭제되는 내용을 보고합니다. 이후 Get-Childitem 명령은 파일이 삭제되지 않았음을 확인합니다.

              PS> remove-item test.txt
              What if: 대상 "항목: C:\test.txt"에서 "Remove-Item" 작업을 수행합니다.
              PS> get-childitem test.txt

              디렉터리: Microsoft.PowerShell.Core\FileSystem::C:


              Mode                LastWriteTime     Length     Name
              ----                -------------     ------     ----
              -a---  2006년 7월 29일   오후 7:15        84     test.txt



    예제

    이 예에서는 다른 $WhatIfPreference 값 사용의 효과를 보여 줍니다. 또한 WhatIf cmdlet 매개 
    변수를 사용하여 특정 명령에 대한 기본 설정 값을 재정의하는 방법을 보여 줍니다.
    
    이 예에서는 기본값인 0(사용하지 않음)의 효과를 보여 줍니다.

             PS> $whatifpreference                     
             0                         # 현재 값을 확인합니다.

             PS> get-childitem test.txt | format-list FullName
             FullName : C:\test.txt
                                       # 파일이 있는지 확인합니다.

             PS> remove-item test.txt                  
             PS>                       # 파일을 삭제합니다.

             PS> get-childitem test.txt | format-list -property FullName
                                       # 파일이 삭제되었는지 확인합니다.

             Get-ChildItem : 'C:\test.txt' 경로는 존재하지 않으므로 찾을 수 없습니다.
             줄:1 문자:14
             + get-childitem <<<< test.txt | format-list fullname


     이 예에서는 $WhatIfPreference의 값이 0인 경우 WhatIf 매개 변수 사용의 효과를 보여 줍니다.

             PS> get-childitem test2.txt | format-list -property FullName 
             FullName : C:\test2.txt
                                      # 파일이 있는지 확인합니다.

             PS> remove-item test2.txt -whatif         
             What if: 대상 "C:\test2.txt"에서 "파일 제거" 작업을 수행합니다.
                                      # WhatIf 매개 변수를 사용합니다.

             PS> get-childitem test2.txt | format-list -property FullName
             FullName : C:\test2.txt
                                      # 파일이 삭제되지 않았는지 확인합니다. 

    이 예에서는 1(WhatIf enabled) 값의 효과를 보여 줍니다. Remove-Item을 사용하여 cmdlet을 
    삭제하면 Remove-Item은 삭제할 파일의 경로를 표시하지만 파일을 삭제하지는 않습니다.

             PS> $whatifpreference = 1                 
             PS> $whatifpreference
             1                        # 값을 변경합니다.
                                      
             PS> remove-item test.txt                  
             What if: 대상 "C:\test2.txt"에서 "파일 제거" 작업을 수행합니다.
                                      # 파일 삭제를 시도합니다.

             PS> get-childitem test.txt | format-list FullName
             FullName : C:\test.txt
                                      # 파일이 있는지 확인합니다.

     이 예에서는 $WhatIfPreference 값이 1인 경우 파일을 삭제하는 방법을 보여 줍니다. 값이 
     $false인 WhatIf 매개 변수가 사용됩니다.

             PS> remove-item test.txt -whatif:$false
                                      # 값이 $false인 WhatIf 매개 변수를 사용합니다.

     이 예에서는 일부 cmdlet이 WhatIf 동작을 지원하고 나머지 cmdlet이 WhatIf 동작을 지원하지 
     않음을 보여 줍니다. 이 예에서 $WhatIfPreference 값이 1(사용함)이면 WhatIf를 지원하지 않는 
     Get-Process 명령은 실행되지만 Stop-Process 명령은 WhatIf 동작을 수행합니다.
     값이 $false인 WhatIf 매개 변수를 사용하여 Stop-Process 명령의 WhatIf 동작을 재정의할 수 
     있습니다.

            PS> $whatifpreference = 1                  
                                    # 값을 1로 변경합니다.
                                                      
            PS> get-process winword 
                                    # Get-Process 명령이 완료됩니다.

            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: 대상 "WINWORD (2312)"에서 "Stop-Process" 작업을 수행합니다.
                                    # Stop-Process 명령에 WhatIf를 사용합니다.

           PS> stop-process -name winword -whatif:$false
           PS>                      # WhatIf:$false는 기본 설정을 재정의합니다.
           
           PS> get-process winword                     
           Get-Process : 이름이 'winword'인 프로세스를 찾을 수 없습니다. 프로세스 이름을 
           확인하고 다시 cmdlet을 호출하십시오.
           줄:1 문자:12
           + get-process <<<< winword
                                    # 프로세스가 중지되었는지 확인합니다.



참고 항목
    about_Automatic_Variables
    about_CommonParameters
    about_Environment_Variables
    about_Profiles
    about_Remote
    about_Scopes
    about_Variables