다음을 통해 공유


about_Preference_Variables

간단한 설명

PowerShell의 동작을 사용자 지정하는 변수입니다.

자세한 설명

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

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

다음 표에서는 기본 설정 변수와 기본값을 나열합니다.

변수 기본값
$ConfirmPreference High
$DebugPreference SilentlyContinue
$ErrorActionPreference Continue
$ErrorView NormalView
$FormatEnumerationLimit 4
$InformationPreference SilentlyContinue
$LogCommandHealthEvent $False (기록되지 않음)
$LogCommandLifecycleEvent $False (기록되지 않음)
$LogEngineHealthEvent $True (기록됨)
$LogEngineLifecycleEvent $True (기록됨)
$LogProviderLifecycleEvent $True (기록됨)
$LogProviderHealthEvent $True (기록됨)
$MaximumAliasCount 4096
$MaximumDriveCount 4096
$MaximumErrorCount 256
$MaximumFunctionCount 4096
$MaximumHistoryCount 4096
$MaximumVariableCount 4096
$OFS 공백 문자(" ")
$OutputEncoding ASCIIEncoding 개체
$ProgressPreference Continue
$PSDefaultParameterValues @{} (빈 해시 테이블)
$PSEmailServer $Null (없음)
$PSModuleAutoLoadingPreference All
$PSSessionApplicationName 'wsman'
$PSSessionConfigurationName 'http://schemas.microsoft.com/powershell/Microsoft.PowerShell'
$PSSessionOption PSSessionOption 개체
$Transcript $Null (없음)
$VerbosePreference SilentlyContinue
$WarningPreference Continue
$WhatIfPreference $False

PowerShell에는 사용자 기본 설정을 저장하는 다음과 같은 환경 변수가 포함되어 있습니다. 이러한 환경 변수에 대한 자세한 내용은 about_Environment_Variables 참조하세요.

  • $env:PSExecutionPolicyPreference
  • $env:PSModulePath

참고 항목

기본 설정 변수에 대한 변경 내용은 만들어진 범위 및 해당 하위 범위에만 적용됩니다. 예를 들어 기본 설정 변수를 단일 함수 또는 스크립트로 변경하는 효과를 제한할 수 있습니다. 자세한 내용은 about_Scopes 참조하세요.

기본 설정 변수 작업

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

특정 기본 설정 변수의 현재 값을 표시하려면 변수의 이름을 입력합니다. 예를 들어 다음 명령은 변수의 값을 표시합니다 $ConfirmPreference .

 $ConfirmPreference
High

변수의 값을 변경하려면 할당 문을 사용합니다. 예를 들어 다음 문은 매개 변수의 값을 보통으로 변경 $ConfirmPreference 합니다.

$ConfirmPreference = "Medium"

설정한 값은 현재 PowerShell 세션과 관련이 있습니다. 모든 PowerShell 세션에서 변수를 효과적으로 만들려면 PowerShell 프로필에 추가합니다. 자세한 내용은 about_Profiles를 참조하세요.

원격으로 작업

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

원격 명령에 대한 자세한 내용은 about_Remote 참조하세요.

$ConfirmPreference

cmdlet 또는 함수를 실행하기 전에 PowerShell에서 자동으로 확인 메시지를 표시할지 여부를 결정합니다.

변수는 $ConfirmPreference 열거형 값 중 하나(높음ConfirmImpact, 보통, 또는 없음)를 사용합니다.

Cmdlet 및 함수에는 높음, 보통 또는 낮음위험이 할당됩니다. 변수 값 $ConfirmPreference 이 cmdlet 또는 함수에 할당된 위험보다 작거나 같으면 powerShell은 cmdlet 또는 함수를 실행하기 전에 자동으로 확인 메시지를 표시합니다. cmdlet 또는 함수에 위험을 할당하는 방법에 대한 자세한 내용은 about_Functions_CmdletBindingAttribute 참조하세요.

변수 값 $ConfirmPreference 이 None면 cmdlet 또는 함수를 실행하기 전에 PowerShell에서 자동으로 메시지를 표시하지 않습니다.

세션의 모든 cmdlet 및 함수에 대한 확인 동작을 변경하려면 변수의 값을 변경 $ConfirmPreference 합니다.

단일 명령에 대해 재정 $ConfirmPreference 의하려면 cmdlet 또는 함수 의 Confirm 매개 변수를 사용합니다. 확인을 -Confirm요청하려면 . 확인을 표시하지 않으면 을 사용합니다 -Confirm:$false.

유효한 값은 다음과 같습니다 $ConfirmPreference.

  • 없음: PowerShell은 자동으로 프롬프트를 표시하지 않습니다. 특정 명령의 확인을 요청하려면 cmdlet 또는 함수의 Confirm 매개 변수를 사용합니다.
  • 낮음: PowerShell은 위험이 낮거나 중간 또는 높은 cmdlet 또는 함수를 실행하기 전에 확인을 요청합니다.
  • 중간: PowerShell은 중간 또는 높은 위험이 있는 cmdlet 또는 함수를 실행하기 전에 확인을 요청합니다.
  • 높음: PowerShell은 위험이 높은 cmdlet 또는 함수를 실행하기 전에 확인을 요청합니다.

자세한 설명

PowerShell은 작업을 수행하기 전에 확인 메시지를 자동으로 표시할 수 있습니다. 예를 들어 cmdlet 또는 함수가 데이터를 삭제하거나 상당한 양의 시스템 리소스를 사용하는 시스템에 큰 영향을 미치는 경우입니다.

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

위험 추정치는 ConfirmImpact라고 하는 cmdlet 또는 함수의 특성입니다. 사용자는 변경할 수 없습니다.

시스템에 위험을 초래할 수 있는 Cmdlet 및 함수에는 단일 명령에 대한 확인을 요청하거나 표시하지 않는 데 사용할 수 있는 Confirm 매개 변수가 있습니다.

대부분의 cmdlet 및 함수는 ConfirmImpact기본값인 Medium유지합니다. $ConfirmPreference는 기본적으로 높음으로 설정됩니다. 따라서 사용자가 Confirm 매개 변수를 지정하지 않을 때 명령이 자동으로 확인을 요청하는 경우는 드뭅니다. 자동 확인 메시지를 더 많은 cmdlet 및 함수로 확장하려면 값을 $ConfirmPreference 보통 또는 음으로 설정합니다.

예제

이 예제에서는 변수의 기본값$ConfirmPreference High의 효과를 보여 있습니다. 높은 값은 위험 수준이 높은 cmdlet 및 함수만 확인합니다. 대부분의 cmdlet 및 함수는 중간 위험이므로 자동으로 확인되지 Remove-Item 않고 파일을 삭제합니다. 명령에 추가 -Confirm 하면 사용자에게 확인 메시지가 표시됩니다.

$ConfirmPreference
High
Remove-Item -Path C:\temp1.txt

확인을 요청하는 데 사용합니다 -Confirm .

Remove-Item -Path C:\temp2.txt -Confirm
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 보통으로 변경하는 효과를 보여 있습니다. 대부분의 cmdlet 및 함수는 중간 위험이므로 자동으로 확인됩니다. 단일 명령에 대한 확인 프롬프트를 표시하지 않으면 값$false이 있는 Confirm 매개 변수를 사용합니다.

$ConfirmPreference = "Medium"
Remove-Item -Path C:\temp2.txt
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"):
Remove-Item -Path C:\temp3.txt -Confirm:$false

$DebugPreference

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

변수는 SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend 또는 Break의 열거형 값 중 하나를 ActionPreference 사용합니다.$DebugPreference

일부 cmdlet은 일반적으로 프로그래머 및 기술 지원 전문가를 위해 설계된 기술 메시지인 디버깅 메시지를 표시합니다. 기본적으로 디버깅 메시지는 표시되지 않지만 값을 $DebugPreference변경하여 디버깅 메시지를 표시할 수 있습니다.

cmdlet의 디버그 공통 매개 변수를 사용하여 특정 명령에 대한 디버깅 메시지를 표시하거나 숨길 수 있습니다. 자세한 내용은 about_CommonParameters를 참조하세요.

유효한 값은 다음과 같습니다.

  • 중지: 디버그 메시지를 표시하고 실행을 중지합니다. 콘솔에 오류를 씁니다.
  • 조회: 디버그 메시지를 표시하고 계속할지 여부를 묻습니다.
  • 계속: 디버그 메시지를 표시하고 실행을 계속합니다.
  • SilentlyContinue: (기본값) 효과가 없습니다. 디버그 메시지가 표시되지 않으며 중단 없이 실행이 계속됩니다.

디버깅 메시지를 생성하도록 명령이 구성된 경우 명령에 디버그 공통 매개 변수를 추가하면 변수 값이 $DebugPreference Inquire변경됩니다.

예제

다음 예제에서는 명령줄에서 명령을 입력할 때 Write-Debug$DebugPreference 값을 변경하는 효과를 보여 줍니다. 변경 내용은 cmdlet 및 스크립트에서 생성된 메시지를 포함하여 모든 디버깅 메시지에 영향을 줍니다. 예제에서는 디버그 매개 변수를 보여 줍니다. 이 매개 변수는 단일 명령과 관련된 디버깅 메시지를 표시하거나 숨깁니다.

이 예제에서는 변수의 기본값$DebugPreference SilentlyContinue의 효과를 보여줍니다. 기본적으로 Write-Debug cmdlet의 디버그 메시지는 표시되지 않으며 처리가 계속됩니다. 디버그 매개 변수를 사용하는 경우 단일 명령에 대한 기본 설정을 재정의합니다. 사용자에게 확인을 요청하는 메시지가 표시됩니다.

$DebugPreference
SilentlyContinue
Write-Debug -Message "Hello, World"
Write-Debug -Message "Hello, World" -Debug
DEBUG: Hello, World
Confirm
Continue with this operation?
[Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend
[?] Help (default is "Y"):

이 예제에서는 Continue 값의 $DebugPreference 효과를 보여 있습니다. 디버그 메시지가 표시되고 명령이 계속 처리됩니다.

$DebugPreference = "Continue"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World

이 예제에서는 값이 있는 Debug 매개 변수를 $false 사용하여 단일 명령에 대한 메시지를 표시하지 않습니다. 디버그 메시지가 표시되지 않습니다.

Write-Debug -Message "Hello, World" -Debug:$false

이 예제에서는 중지 값으로 설정되는 효과를 $DebugPreference 보여줍니다. 디버그 메시지가 표시되고 명령이 중지됩니다.

$DebugPreference = "Stop"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World
Write-Debug : The running command stopped because the preference variable
 "DebugPreference" or common parameter is set to Stop: Hello, World
At line:1 char:1
+ Write-Debug -Message "Hello, World"

이 예제에서는 값이 있는 Debug 매개 변수를 $false 사용하여 단일 명령에 대한 메시지를 표시하지 않습니다. 디버그 메시지가 표시되지 않고 처리가 중지되지 않습니다.

Write-Debug -Message "Hello, World" -Debug:$false

이 예제에서는 Inquire 값으로 설정되는 효과를 $DebugPreference 보여 있습니다. 디버그 메시지가 표시되고 사용자에게 확인 메시지가 표시됩니다.

$DebugPreference = "Inquire"
Write-Debug -Message "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"):

이 예제에서는 값이 있는 Debug 매개 변수를 $false 사용하여 단일 명령에 대한 메시지를 표시하지 않습니다. 디버그 메시지가 표시되지 않고 처리가 계속됩니다.

Write-Debug -Message "Hello, World" -Debug:$false

$ErrorActionPreference

Cmdlet 처리를 중지하지 않는 오류인 종료되지 않는 오류에 PowerShell이 응답하는 방법을 결정합니다. 예를 들어 명령줄 또는 스크립트, cmdlet 또는 공급자(예: cmdlet에서 Write-Error 생성된 오류)입니다.

변수는 다음 $ErrorActionPreference 중 하나를 취합니다. ActionPreference열거형 값: SilentlyContinue, 중지, 계속, 조회, 무시 또는 일시 중단.

cmdlet의 ErrorAction 공통 매개 변수를 사용하여 특정 명령에 대한 기본 설정을 재정의할 수 있습니다.

유효한 값은 다음과 같습니다.

  • 계속: (기본값) 오류 메시지를 표시하고 계속 실행합니다.
  • 무시: 오류 메시지를 표시하지 않으며 명령을 계속 실행합니다. Ignore 값은 저장된 기본 설정으로 사용되지 않고 명령별 사용을 위한 것입니다. 무시 는 변수에 유효한 값이 $ErrorActionPreference 아닙니다.
  • Inquire: 오류 메시지를 표시하고 계속할지 여부를 묻습니다.
  • SilentlyContinue: 효과가 없습니다. 오류 메시지가 표시되지 않고 중단 없이 실행이 계속됩니다.
  • 중지: 오류 메시지를 표시하고 실행을 중지합니다. 생성된 오류 외에도 Stop 값은 오류 스트림에 ActionPreferenceStopException 개체를 생성합니다.
  • 일시 중단: 추가 조사를 허용하도록 워크플로 작업을 자동으로 일시 중단합니다. 조사 후 워크플로를 다시 시작합니다. Suspend 값은 저장된 기본 설정으로 사용되지 않고 명령별 사용을 위한 것입니다. 일시 중단 은 변수에 대한 유효한 값이 $ErrorActionPreference 아닙니다.

$ErrorActionPreference및 ErrorAction 매개 변수는 cmdlet 처리를 중지하는 종료 오류에 PowerShell이 응답하는 방식에 영향을 주지 않습니다. ErrorAction 일반 매개 변수에 대한 자세한 내용은 about_CommonParameters 참조하세요.

예제

다음 예제에서는 변수의 다양한 값의 효과를 보여 줍니다 $ErrorActionPreference . ErrorAction 매개 변수는 값을 재정의하는 $ErrorActionPreference 데 사용됩니다.

이 예제에서는 기본값인 $ErrorActionPreference Continue보여줍니다. 종료되지 않는 오류가 생성됩니다. 메시지가 표시되고 처리가 계속됩니다.

# Change the ErrorActionPreference to 'Continue'
$ErrorActionPreference = 'Continue'
# Generate a non-terminating error and continue processing the script.
Write-Error -Message  'Test Error' ; Write-Host 'Hello World'
Write-Error -Message  'Test Error' ; Write-Host 'Hello World' : Test Error
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

Hello World

이 예제에서는 기본값인 $ErrorActionPreference Inquire를 보여줍니다. 오류가 생성되고 작업에 대한 프롬프트가 표시됩니다.

# Change the ErrorActionPreference to 'Inquire'
$ErrorActionPreference = 'Inquire'
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
Confirm
Test Error
[Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend  [?] Help (default is "Y"):

이 예제에서는 SilentlyContinue의 집합을 보여줍니다$ErrorActionPreference. 오류 메시지가 표시되지 않습니다.

# Change the ErrorActionPreference to 'SilentlyContinue'
$ErrorActionPreference = 'SilentlyContinue'
# Generate an error message
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
# Error message is suppressed and script continues processing
Hello World

이 예제에서는 중지로 설정된 것을 보여줍니다$ErrorActionPreference. 변수에 생성된 $Error 추가 개체도 표시됩니다.

# Change the ErrorActionPreference to 'Stop'
$ErrorActionPreference = 'Stop'
# Error message is generated and script stops processing
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'

# Show the ActionPreferenceStopException and the error generated
$Error[0]
$Error[1]
Write-Error -Message 'Test Error' ; Write-Host 'Hello World' : Test Error
At line:1 char:1
+ Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

The running command stopped because the preference variable "ErrorActionPreference"
or common parameter is set to Stop: Test Error

Write-Error -Message 'Test Error' ; Write-Host 'Hello World' : Test Error
At line:1 char:1
+ Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

$ErrorView

PowerShell에서 오류 메시지의 표시 형식을 결정합니다.

변수는 $ErrorView 열거형 값 ErrorView 하나인 NormalView 또는 CategoryView를 사용합니다.

유효한 값은 다음과 같습니다.

  • NormalView: 대부분의 사용자를 위해 설계된 자세한 보기입니다. 오류에 대한 설명과 오류와 관련된 개체의 이름으로 구성됩니다.

  • CategoryView: 프로덕션 환경을 위해 설계된 간결하고 구조화된 뷰입니다. 형식은 다음과 같습니다.

    {Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}

CategoryView의 필드에 대한 자세한 내용은 ErrorCategoryInfo 클래스를 참조하세요.

예제

이 예제에서는 값 $ErrorView 이 기본값 인 NormalView일 때 오류가 표시되는 방법을 보여 줍니다. Get-ChildItem 는 존재하지 않는 파일을 찾는 데 사용됩니다.

Get-ChildItem -Path C:\nofile.txt
Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -Path C:\nofile.txt

이 예제에서는 값 $ErrorView 이 CategoryView로 변경될 때 동일한 오류가 표시되는 방법을 보여 줍니다.

$ErrorView = "CategoryView"
Get-ChildItem -Path C:\nofile.txt
ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem], ItemNotFoundException

이 예제에서는 값 $ErrorView 만 오류 표시에 영향을 줍니다. 자동 변수에 저장된 $Error 오류 개체의 구조는 변경되지 않습니다. 자동 변수에 $Error 대한 자세한 내용은 about_automatic_variables 참조하세요.

다음 명령은 오류 배열, 요소 0의 가장 최근 오류와 연결된 ErrorRecord 개체를 사용하고 목록의 개체 속성에 서식을 지정합니다.

$Error[0] | Format-List -Property * -Force
PSMessageDetails      :
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, UInt32
                          depth, CmdletProviderContext context)
                        at System.Management.Automation.ChildItemCmdlet
                          ProviderIntrinsics.Get(String path, Boolean
                          recurse, UInt32 depth, 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
ScriptStackTrace      : at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {0, 1}

$FormatEnumerationLimit

디스플레이에 포함된 열거형 항목 수를 결정합니다. 이 변수는 기본 개체에 영향을 주지 않고 표시에만 영향을 미칩니다. 값 $FormatEnumerationLimit 이 열거된 항목 수보다 작으면 PowerShell은 표시되지 않는 항목을 나타내는 줄임표(...)를 추가합니다.

유효한 값: 정수(Int32)

기본값: 4

예제

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

이 예제의 명령은 컴퓨터에서 실행되는 모든 서비스를 두 그룹으로 나열하는 테이블을 생성합니다. 하나는 서비스 실행 용이고 다른 하나는 중지된 서비스입니다. 명령을 사용하여 Get-Service 모든 서비스를 가져옵니다. 그런 다음, 파이프라인 Group-Object 을 통해 결과를 cmdlet으로 전송합니다. 이 cmdlet은 결과를 서비스 상태별로 그룹화합니다.

결과는 이름 열의 상태와 그룹 열의 프로세스를 나열하는 테이블입니다. 열 레이블을 변경하려면 해시 테이블을 사용하고 about_Hash_Tables 참조하세요. 자세한 내용은 Format-Table의 예제를 참조하세요.

의 현재 값을 찾습니다 $FormatEnumerationLimit.

$FormatEnumerationLimit
4

상태별로 그룹화된 모든 서비스를 나열합니다. 값이 4이므로 각 상태에 $FormatEnumerationLimit 대해 그룹 열에 나열된 최대 4개의 서비스가 있습니다.

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...}

나열된 항목 수를 늘리려면 값을 $FormatEnumerationLimit 1000으로 늘립니다. Group-Object 서비스를 사용하고 Get-Service 표시합니다.

$FormatEnumerationLimit = 1000
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...

Wrap 매개 변수를 사용하여 Format-Table 서비스 목록을 표시합니다.

Get-Service | Group-Object -Property Status | Format-Table -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,
                  SCardSvr, SwPrv, SysmonLog, TlntSvr, upnphost, UPS, VSS,
                  WmdmPmSN, Wmi, WmiApSrv, xmlprov}

$InformationPreference

변수를 $InformationPreference 사용하면 사용자에게 표시할 정보 스트림 기본 설정을 지정할 수 있습니다. 특히 Write-Information cmdlet을 추가하여 명령 또는 스크립트에 추가한 정보 메시지입니다. InformationAction 매개 변수를 사용하는 경우 해당 값은 변수 값을 재정의 $InformationPreference 합니다. Write-Information 는 PowerShell 5.0에서 도입되었습니다.

변수는 다음 $InformationPreference 중 하나를 취합니다. ActionPreference열거형 값: SilentlyContinue, 중지, 계속, 조회, 무시 또는 일시 중단.

유효한 값은 다음과 같습니다.

  • 중지: 명령이 발생할 때 명령 또는 스크립트를 중지합니다 Write-Information .
  • Inquire: 명령에서 지정한 정보 메시지를 표시한 Write-Information 다음 계속할지 여부를 묻습니다.
  • 계속: 정보 메시지를 표시하고 계속 실행합니다.
  • 일시 중단: 명령을 수행한 후 Write-Information 워크플로 작업을 자동으로 일시 중단하여 사용자가 계속하기 전에 메시지를 볼 수 있도록 합니다. 워크플로는 사용자의 재량에 따라 다시 시작될 수 있습니다.
  • SilentlyContinue: (기본값) 효과가 없습니다. 정보 메시지는 표시되지 않으며 스크립트는 중단 없이 계속됩니다.

$Log*이벤트

Log*이벤트 기본 설정 변수는 이벤트 뷰어 PowerShell 이벤트 로그에 기록되는 이벤트 유형을 결정합니다. 기본적으로 엔진 및 공급자 이벤트만 기록됩니다. 그러나 Log*이벤트 기본 설정 변수를 사용하여 명령에 대한 이벤트 로깅과 같은 로그를 사용자 지정할 수 있습니다.

Log*이벤트 기본 설정 변수는 다음과 같습니다.

  • $LogCommandHealthEvent: 명령 초기화 및 처리에서 오류 및 예외를 기록합니다. 기본값은 $false 기록되지 않습니다.
  • $LogCommandLifecycleEvent: 명령 검색에서 명령 및 명령 파이프라인 및 보안 예외의 시작 및 중지를 기록합니다. 기본값은 $false 기록되지 않습니다.
  • $LogEngineHealthEvent: 세션의 오류 및 실패를 기록합니다. 기본값은 $true 로깅됩니다.
  • $LogEngineLifecycleEvent: 세션의 열기 및 닫기를 기록합니다. 기본값은 $true 로깅됩니다.
  • $LogProviderHealthEvent: 읽기 및 쓰기 오류, 조회 오류 및 호출 오류와 같은 공급자 오류를 기록합니다. 기본값은 $true 로깅됩니다.
  • $LogProviderLifecycleEvent: PowerShell 공급자의 추가 및 제거 로그입니다. 기본값은 $true 로깅됩니다. PowerShell 공급자에 대한 자세한 내용은 about_Providers 참조하세요.

Log*Event사용하도록 설정하려면 값$true이 있는 변수를 입력합니다. 예를 들면 다음과 같습니다.

$LogCommandLifeCycleEvent = $true

이벤트 형식을 사용하지 않도록 설정하려면 값 $false이 있는 변수를 입력합니다. 예를 들면 다음과 같습니다.

$LogCommandLifeCycleEvent = $false

사용하도록 설정하는 이벤트는 현재 PowerShell 콘솔에만 적용됩니다. 구성을 모든 콘솔에 적용하려면 PowerShell 프로필에 변수 설정을 저장합니다. 자세한 내용은 about_Profiles를 참조하세요.

$MaximumAliasCount

PowerShell 세션에서 허용되는 별칭 수를 결정합니다. 기본값은 4096 이며 대부분의 용도에 충분합니다. 필요에 맞게 조정할 $MaximumAliasCount 수 있습니다.

유효한 값: 1024 - 32768(Int32)

기본값: 4096

시스템에서 별칭을 계산하려면 다음을 입력합니다.

(Get-Alias).count

$MaximumDriveCount

지정된 세션에서 허용되는 PowerShell 드라이브 수를 결정합니다. 예를 들어 PowerShell 공급자가 노출하고 드라이브와 같은 Alias: 드라이브로 표시되는 파일 시스템 드라이브 및 HKLM: 데이터 저장소입니다.

유효한 값: 1024 - 32768(Int32)

기본값: 4096

시스템에서 별칭을 계산하려면 다음을 입력합니다.

(Get-PSDrive).count

$MaximumErrorCount

세션의 오류 기록에 저장되는 오류 수를 결정합니다.

유효한 값: 256 - 32768 (Int32)

기본값: 256

유지된 각 오류를 나타내는 개체는 자동 변수에 $Error 저장됩니다. $Error 에는 오류 레코드 개체의 배열이 포함되어 있습니다. 가장 최근의 오류는 배열 $Error[0]의 첫 번째 개체입니다.

시스템의 오류를 계산하려면 배열의 Count 속성을 사용합니다$Error.

$Error.count

특정 오류를 표시하려면 배열 표기법을 사용하여 [0] 가장 최근의 오류를 확인합니다.

$Error[0]

가장 오래된 보존 오류를 표시하려면 다음을 입력합니다.

$Error[-1]

Force 매개 변수는 ErrorRecord 개체의 특수 서식을 재정의하고 기존 형식으로 되돌려 줍니다. ErrorRecord 개체의 속성을 표시하려면 다음 명령을 입력합니다.

$Error[0] | Format-List -Property * -Force

이 예제에서는 $Error.Count 오류 수를 표시합니다. 오류 기록에서 모든 오류를 삭제하려면 오류 배열의 메서드를 사용합니다 Clear .

$Error.Count
17
$Error.Clear()
$Error.Count
0

오류 배열의 모든 속성과 메서드를 찾으려면 InputObject 매개 변수와 함께 cmdlet을 사용합니다Get-Member. InputObject 매개 변수 Get-Member사용하는 경우 컬렉션의 속성과 메서드를 표시합니다.

Get-Member -InputObject $Error

개체 컬렉션을 파이프할 Get-MemberGet-Member 때 컬렉션에 있는 개체의 속성과 메서드를 표시합니다.

$Error | Get-Member

$MaximumFunctionCount

지정된 세션에서 허용되는 함수 수를 결정합니다.

유효한 값: 1024 - 32768(Int32)

기본값: 4096

세션의 함수를 보려면 PowerShell Function: 공급자가 노출하는 PowerShell Function 드라이브를 사용합니다. 공급자에 대한 Function 자세한 내용은 about_Function_Provider.

현재 세션의 함수를 나열하려면 다음을 입력합니다.

Get-ChildItem Function:

현재 세션의 함수 수를 계산하려면 다음을 입력합니다.

(Get-ChildItem Function:).Count

$MaximumHistoryCount

현재 세션의 명령 기록에 저장되는 명령 수를 결정합니다.

유효한 값: 1 - 32768(Int32)

기본값: 4096

명령 기록에 현재 저장된 명령 수를 확인하려면 다음을 입력합니다.

(Get-History).Count

세션 기록에 저장된 명령을 보려면 cmdlet을 Get-History 사용합니다. 자세한 내용은 about_History 참조하세요.

$MaximumVariableCount

자동 변수, 기본 설정 변수 및 명령 및 스크립트에서 만드는 변수를 포함하여 지정된 세션에서 허용되는 변수 수를 결정합니다.

유효한 값: 1024 - 32768(Int32)

기본값: 4096

세션의 변수를 보려면 powerShell 드라이브 및 PowerShell Variable: Variable 공급자의 cmdlet 및 기능을 사용합니다Get-Variable. 자세한 내용은 about_Variable_Provider 참조하세요.

시스템에서 현재 변수 수를 찾으려면 다음을 입력합니다.

(Get-Variable).Count

$OFS

OFS(출력 필드 구분 기호)는 문자열로 변환되는 배열의 요소를 구분하는 문자를 지정합니다.

유효한 값: 모든 문자열입니다.

기본값: 공백

기본적으로 변수는 $OFS 존재하지 않으며 출력 파일 구분 기호는 공백이지만 이 변수를 추가하고 문자열로 설정할 수 있습니다. 를 입력하여 세션의 $OFS 값을 변경할 수 있습니다 $OFS="<value>".

참고 항목

스크립트, 모듈 또는 구성 출력에서 공간(" ")의 기본값이 필요한 경우 코드의 다른 곳에서 기본값이 $OFS 변경되지 않도록 주의해야 합니다.

예제

이 예제에서는 배열이 문자열로 변환될 때 공백을 사용하여 값을 구분하는 방법을 보여줍니다. 이 경우 정수 배열이 변수에 저장되고 변수가 문자열로 캐스팅됩니다.

$array = 1,2,3,4
[string]$array
1 2 3 4

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

$OFS = "+"
[string]$array
1+2+3+4

기본 동작을 복원하려면 변수 값 $OFS 에 공백(" ")을 할당하거나 삭제할 수 있습니다. 다음 명령은 변수를 삭제한 다음 구분 기호가 공백인지 확인합니다.

Remove-Variable OFS
[string]$array
1 2 3 4

$OutputEncoding

데이터를 네이티브 애플리케이션으로 파이핑할 때 PowerShell에서 사용하는 문자 인코딩 메서드를 결정합니다.

참고 항목

대부분의 시나리오에서 값 $OutputEncoding 은 의 값 [Console]::InputEncoding에 맞춰야 합니다.

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

기본값: ASCIIEncoding 개체입니다.

예제

첫 번째 명령은 의 값을 $OutputEncoding찾습니다. 값은 인코딩 개체이므로 EncodingName 속성만 표시합니다.

$OutputEncoding.EncodingName

나머지 예제에서는 저장 hexdump.ps1 한 다음 PowerShell 스크립트를 사용하여 동작 $OutputEncoding을 보여 줍니다.

$inputStream = [Console]::OpenStandardInput()
try {
    $buffer = [byte[]]::new(1024)
    $read = $inputStream.Read($buffer, 0, $buffer.Length)
    $actual = [byte[]]::new($read)
    [Array]::Copy($buffer, $actual, $read)
    Format-Hex -InputObject $actual
} finally {
    $inputStream.Dispose()
}

다음 예제에서는 위에서 만든 값으로 hexdump.ps1 파이프될 때 문자열 값을 café 바이트로 인코딩하는 방법을 보여줍니다. 이는 문자열 값이 해당 시스템에서 테스트된 시스템의 기본 인코딩인 인코딩 체계를 사용하여 windows-1252 인코딩됨을 보여 줍니다.

'café' | powershell.exe -File .\hexdump.ps1
           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000   63 61 66 3F 0D 0A                                caf?..

다음 예제에서는 인코딩을 UTF-8로 변경할 때 바이트가 어떻게 변경되는지 보여줍니다. é 수행된 대로 windows-1252 인코딩 0x3F 되는 대신 이제 0xC3 0xA9 UTF-8 인코딩이 사용되기 때문입니다.

$OutputEncoding = [System.Text.UTF8Encoding]::new()
'café' | powershell.exe -File .\hexdump.ps1
           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000   63 61 66 C3 A9 0D 0A                             café..

$ProgressPreference

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

변수는 SilentlyContinue, Stop, Continue, Inquire, Ignore 또는 Suspend의 열거형 값 중 하나를 ActionPreference 사용합니다.$ProgressPreference

유효한 값은 다음과 같습니다.

  • 중지: 진행률 표시줄을 표시하지 않습니다. 대신 오류 메시지를 표시하고 실행을 중지합니다.
  • 조회: 진행률 표시줄을 표시하지 않습니다. 계속할 수 있는 권한을 묻는 메시지가 표시됩니다. 회신하거나 AY 신하면 진행률 표시줄이 표시됩니다.
  • 계속: (기본값) 진행률 표시줄을 표시하고 실행을 계속합니다.
  • SilentlyContinue: 명령을 실행하지만 진행률 표시줄은 표시하지 않습니다.

$PSDefaultParameterValues

cmdlet 및 고급 함수의 매개 변수에 대한 기본값을 지정합니다. 값 $PSDefaultParameterValues 은 키가 콜론(:)으로 구분된 cmdlet 이름과 매개 변수 이름으로 구성된 해시 테이블입니다. 이 값은 지정한 사용자 지정 기본값입니다.

$PSDefaultParameterValues 는 PowerShell 3.0에서 도입되었습니다.

이 기본 설정 변수에 대한 자세한 내용은 about_Parameters_Default_Values 참조하세요.

$PSEmailServer

전자 메일 메시지를 보내는 데 사용되는 기본 전자 메일 서버를 지정합니다. 이 기본 설정 변수는 Send-MailMessage cmdlet과 같이 이메일을 보내는 cmdlet에서 사용됩니다.

$PSModuleAutoloadingPreference

세션에서 모듈의 자동 가져오기를 사용하거나 사용하지 않도록 설정합니다. 변수는 $PSModuleAutoloadingPreference 기본적으로 존재하지 않습니다. 변수가 정의되지 않은 경우의 기본 동작은 .와 동일합니다 $PSModuleAutoloadingPreference = 'All'.

모듈을 자동으로 가져오려면 모듈에 포함된 명령을 가져오거나 사용합니다.

변수는 $PSModuleAutoloadingPreference 열거형 값 중 PSModuleAutoLoadingPreference 하나를 사용합니다.

  • All: 모듈은 처음 사용할 때 자동으로 가져옵니다.
  • ModuleQualified: 사용자가 모듈에서 명령의 모듈 정규화된 이름을 사용하는 경우에만 모듈을 자동으로 가져옵니다. 예를 들어 사용자가 형식을 지정MyModule\MyCommand하면 PowerShell에서 MyModule 모듈을 가져옵니다.
  • None: 모듈의 자동 가져오기를 사용하지 않도록 설정합니다. 모듈을 가져오려면 cmdlet을 Import-Module 사용합니다.

모듈의 자동 가져오기에 대한 자세한 내용은 about_Modules 참조하세요.

$PSSessionApplicationName

WS-Management(Web Services for Management) 기술을 사용하는 원격 명령의 기본 애플리케이션 이름을 지정합니다. 자세한 내용은 Windows 원격 관리 정보를 참조하세요.

시스템 기본 애플리케이션 이름은 WSMAN이지만 이 기본 설정 변수를 사용하여 기본값을 변경할 수 있습니다.

애플리케이션 이름은 연결 URI의 마지막 노드입니다. 예를 들어 다음 샘플 URI의 애플리케이션 이름은 .입니다 WSMAN.

http://Server01:8080/WSMAN

기본 애플리케이션 이름은 원격 명령이 연결 URI 또는 애플리케이션 이름을 지정하지 않는 경우에 사용됩니다.

WinRM 서비스는 애플리케이션 이름을 사용하여 연결 요청을 서비스할 수신기를 선택합니다. 매개 변수 값은 원격 컴퓨터에서 수신기의 URLPrefix 속성 값과 일치해야 합니다.

시스템 기본값과 이 변수의 값을 재정의하고 특정 세션에 대해 다른 애플리케이션 이름을 선택하려면 New-PSSession, Enter-PSSession 또는 Invoke-Command cmdlet의 ConnectionURI 또는 ApplicationName 매개 변수를 사용합니다.

$PSSessionApplicationName 기본 설정 변수는 로컬 컴퓨터에서 설정되지만 원격 컴퓨터에서 수신기를 지정합니다. 지정한 애플리케이션 이름이 원격 컴퓨터에 없으면 세션을 설정하는 명령이 실패합니다.

$PSSessionConfigurationName

현재 세션에서 새 세션을 만드는 데 사용되는 기본 세션 구성을 지정합니다.

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

변수 값 $PSSessionConfigurationName 은 정규화된 리소스 URI입니다.

기본값 http://schemas.microsoft.com/PowerShell/microsoft.PowerShell 은 원격 컴퓨터의 Microsoft.PowerShell 세션 구성을 나타냅니다.

구성 이름만 지정하면 다음 스키마 URI가 앞에 추가됩니다.

http://schemas.microsoft.com/PowerShell/

기본값을 재정의하고 , Enter-PSSession또는 Invoke-Command cmdlet의 New-PSSessionConfigurationName 매개 변수를 사용하여 특정 세션에 대해 다른 세션 구성을 선택할 수 있습니다.

언제든지 이 변수의 값을 변경할 수 있습니다. 이렇게 하면 선택한 세션 구성이 원격 컴퓨터에 있어야 합니다. 그렇지 않으면 세션 구성을 사용하는 세션을 만드는 명령이 실패합니다.

이 기본 설정 변수는 원격 사용자가 이 컴퓨터에 연결하는 세션을 만들 때 사용되는 로컬 세션 구성을 결정하지 않습니다. 그러나 로컬 세션 구성에 대한 사용 권한을 사용하여 사용할 수 있는 사용자를 결정할 수 있습니다.

$PSSessionOption

원격 세션에서 고급 사용자 옵션에 대한 기본값을 설정합니다. 이러한 옵션 기본 설정은 세션 옵션에 대한 시스템 기본값을 재정의합니다.

변수에는 $PSSessionOption PSSessionOption 개체가 포함됩니다. 자세한 내용은 System.Management.Automation.Remoting.PSSessionOption을 참조하세요. 개체의 각 속성은 세션 옵션을 나타냅니다. 예를 들어 NoCompression 속성은 세션 중에 데이터 압축을 켭니다.

기본적으로 변수에는 $PSSessionOption 아래와 같이 모든 옵션에 대한 기본값이 있는 PSSessionOption 개체가 포함됩니다.

MaximumConnectionRedirectionCount : 5
NoCompression                     : False
NoMachineProfile                  : False
ProxyAccessType                   : None
ProxyAuthentication               : Negotiate
ProxyCredential                   :
SkipCACheck                       : False
SkipCNCheck                       : False
SkipRevocationCheck               : False
OperationTimeout                  : 00:03:00
NoEncryption                      : False
UseUTF16                          : False
IncludePortInSPN                  : False
OutputBufferingMode               : None
Culture                           :
UICulture                         :
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize         : 209715200
ApplicationArguments              :
OpenTimeout                       : 00:03:00
CancelTimeout                     : 00:01:00
IdleTimeout                       : -00:00:00.0010000

이러한 옵션에 대한 설명 및 자세한 내용은 New-PSSessionOption을 참조하세요. 원격 명령 및 세션 에 대한 자세한 내용은 about_Remoteabout_PSSessions 참조하세요.

기본 설정 변수의 $PSSessionOption 값을 변경하려면 cmdlet을 New-PSSessionOption 사용하여 원하는 옵션 값으로 PSSessionOption 개체를 만듭니다. 라는 변수 $PSSessionOption에 출력을 저장합니다.

$PSSessionOption = New-PSSessionOption -NoCompression

모든 PowerShell 세션에서 기본 설정 변수를 New-PSSessionOption 사용 $PSSessionOption 하려면 PowerShell 프로필에 변수를 $PSSessionOption 만드는 명령을 추가합니다. 자세한 내용은 about_Profiles를 참조하세요.

특정 원격 세션에 대한 사용자 지정 옵션을 설정할 수 있습니다. 설정한 옵션이 시스템 기본값 및 기본 설정 변수 값 $PSSessionOption 보다 우선합니다.

사용자 지정 세션 옵션을 설정하려면 cmdlet을 New-PSSessionOption 사용하여 PSSessionOption 개체를 만듭니다. 그런 다음, 세션을 만드는 New-PSSessionEnter-PSSessionInvoke-Commandcmdlet에서 SessionOption 매개 변수의 값으로 PSSessionOption 개체를 사용합니다.

$Transcript

Start-Transcript 기록 파일의 이름과 위치를 지정하는 데 사용됩니다. Path 매개 변수 Start-Transcript 의 값을 지정하지 않으면 전역 변수 값의 $Transcript 경로를 사용합니다. 이 변수 Start-Transcript 를 만들지 않은 경우 기본 이름을 사용하여 다음 위치에 대본을 저장합니다.

  • 기본 위치: $HOME\Documents
  • 기본 파일 이름: PowerShell_transcript.<computername>.<random>.<timestamp>.txt

$VerbosePreference

Write-Verbose cmdlet에서 생성된 메시지와 같이 스크립트, cmdlet 또는 공급자가 생성한 자세한 메시지에 PowerShell이 응답하는 방법을 결정합니다. 자세한 내용은 명령을 실행하기 위해 수행된 작업을 설명합니다.

기본적으로 자세한 내용은 표시되지 않지만 값을 $VerbosePreference변경하여 이 동작을 변경할 수 있습니다.

변수는 SilentlyContinue, Stop, Continue, Inquire, Ignore 또는 Suspend의 열거형 값 중 하나를 ActionPreference 사용합니다.$VerbosePreference

유효한 값은 다음과 같습니다.

  • 중지: 자세한 메시지와 오류 메시지를 표시한 다음 실행을 중지합니다.
  • Inquire: 자세한 정보 표시 메시지를 표시한 다음 계속할지 여부를 묻는 프롬프트를 표시합니다.
  • 계속: 자세한 정보 표시 메시지를 표시한 다음 실행을 계속합니다.
  • SilentlyContinue: (기본값) 자세한 정보 표시 메시지를 표시하지 않습니다. 실행을 계속합니다.

cmdlet의 자세한 정보 표시 일반 매개 변수를 사용하여 특정 명령에 대한 자세한 정보 표시 메시지를 표시하거나 숨길 수 있습니다. 자세한 내용은 about_CommonParameters를 참조하세요.

예제

다음 예제에서는 기본 설정 값을 재정의하기 위해 서로 다른 값의 $VerbosePreference 효과와 Verbose 매개 변수를 보여 줍니다.

이 예제에서는 SilentlyContinue 값의 효과를 보여 하며, 이것이 기본값입니다. 이 명령은 Message 매개 변수를 사용하지만 PowerShell 콘솔에 메시지를 쓰지 않습니다.

Write-Verbose -Message "Verbose message test."

Verbose 매개 변수를 사용하면 메시지가 기록됩니다.

Write-Verbose -Message "Verbose message test." -Verbose
VERBOSE: Verbose message test.

이 예제에서는 Continue 값의 효과를 보여 있습니다. $VerbosePreference 변수가 계속으로 설정되고 메시지가 표시됩니다.

$VerbosePreference = "Continue"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.

이 예제에서는 Verbose 매개 변수를 해당 값과 함께 사용하여 Continue 값을 재정의 $false 합니다. 메시지가 표시되지 않습니다.

Write-Verbose -Message "Verbose message test." -Verbose:$false

이 예제에서는 중지 값의 효과를 보여 있습니다. 변수가 $VerbosePreference 중지설정되고 메시지가 표시됩니다. 명령이 중지되었습니다.

$VerbosePreference = "Stop"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
Write-Verbose : The running command stopped because the preference variable
  "VerbosePreference" or common parameter is set to Stop: Verbose message test.
At line:1 char:1
+ Write-Verbose -Message "Verbose message test."

이 예제에서는 Verbose 매개 변수를 해당 값과 함께 사용하여 Stop 값을 재정의 $false 합니다. 메시지가 표시되지 않습니다.

Write-Verbose -Message "Verbose message test." -Verbose:$false

이 예제에서는 Inquire 값의 효과를 보여줍니다. 변수가 $VerbosePreference Inquire설정됩니다. 메시지가 표시되고 사용자에게 확인 메시지가 표시됩니다.

$VerbosePreference = "Inquire"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.

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

이 예제에서는 Verbose 매개 변수를 해당 값과 함께 사용하여 Inquire 값을 재정의 $false 합니다. 사용자에게 메시지가 표시되지 않고 메시지가 표시되지 않습니다.

Write-Verbose -Message "Verbose message test." -Verbose:$false

$WarningPreference

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

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

변수는 SilentlyContinue, Stop, Continue, Inquire, Ignore 또는 Suspend의 열거형 값 중 하나를 ActionPreference 사용합니다.$WarningPreference

유효한 값은 다음과 같습니다.

  • 중지: 경고 메시지와 오류 메시지를 표시한 다음 실행을 중지합니다.
  • Inquire: 경고 메시지를 표시한 다음 계속하려면 사용 권한을 묻는 메시지를 표시합니다.
  • 계속: (기본값) 경고 메시지를 표시한 다음 실행을 계속합니다.
  • SilentlyContinue: 경고 메시지를 표시하지 않습니다. 실행을 계속합니다.

cmdlet의 WarningAction 공통 매개 변수를 사용하여 PowerShell이 특정 명령의 경고에 응답하는 방법을 결정할 수 있습니다. 자세한 내용은 about_CommonParameters를 참조하세요.

예제

다음 예제에서는 서로 다른 값의 효과를 보여 줍니다 $WarningPreference. WarningAction 매개 변수는 기본 설정 값을 재정의합니다.

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

$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.

이 예제에서는 WarningAction 매개 변수를 SilentlyContinue과 함께 사용하여 경고를 표시하지 않습니다. 메시지가 표시되지 않습니다.

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue

다음은 변수$WarningPreference SilentlyContinue 값으로 변경하는 예제입니다. 메시지가 표시되지 않습니다.

$WarningPreference = "SilentlyContinue"
$m = "This action can delete data."
Write-Warning -Message $m

이 예제에서는 WarningAction 매개 변수를 사용하여 경고가 생성될 때 중지합니다.

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction Stop
WARNING: This action can delete data.
Write-Warning : The running command stopped because the preference variable
  "WarningPreference" or common parameter is set to Stop:
    This action can delete data.
At line:1 char:1
+ Write-Warning -Message $m -WarningAction Stop

다음은 변수를 $WarningPreference Inquire 값으로 변경하는 예제입니다. 사용자에게 확인을 요청하는 메시지가 표시됩니다.

$WarningPreference = "Inquire"
$m = "This action can delete data."
Write-Warning -Message $m
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"):

이 예제에서는 SilentlyContinue과 함께 WarningAction 매개 변수를 사용합니다. 명령이 계속 실행되고 메시지가 표시되지 않습니다.

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue

다음은 값을 중지로 $WarningPreference 변경하는 예제입니다.

$WarningPreference = "Stop"
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
Write-Warning : The running command stopped because the preference variable
  "WarningPreference" or common parameter is set to Stop:
    This action can delete data.
At line:1 char:1
+ Write-Warning -Message $m

이 예제에서는 Inquire 값과 함께 WarningAction사용합니다. 경고가 발생하면 사용자에게 메시지가 표시됩니다.

$m = "This action can delete data."
Write-Warning -Message $m -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"):

$WhatIfPreference

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

유효한 값은 다음과 같습니다.

  • False (0, 사용 안 함): (기본값) WhatIf 가 자동으로 사용하도록 설정되지 않습니다. 수동으로 사용하도록 설정하려면 cmdlet의 WhatIf 매개 변수를 사용합니다.
  • True (1, 사용): WhatIf 를 지원하는 모든 명령에서 자동으로 사용하도록 설정됩니다. 사용자는 False 값과 함께 WhatIf 매개 변수를 사용하여 수동으로 사용하지 않도록 설정할 수 있습니다(예: -WhatIf:$false.).

예제

다음 예제에서는 서로 다른 값의 효과를 보여 줍니다 $WhatIfPreference. WhatIf 매개 변수를 사용하여 특정 명령에 대한 기본 설정 값을 재정의하는 방법을 보여줍니다.

이 예제에서는 기본값인 False로 설정된 변수의 $WhatIfPreference 효과를 보여줍니다. 파일이 있는지 확인하는 데 사용합니다 Get-ChildItem . Remove-Item 는 파일을 삭제합니다. 파일을 삭제한 후 .을 사용하여 삭제 Get-ChildItem를 확인할 수 있습니다.

Get-ChildItem -Path .\test.txt
Remove-Item -Path ./test.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           9/13/2019    10:53             10 test.txt
Get-ChildItem -Path .\test.txt
Get-ChildItem : Cannot find path 'C:\Test\test.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -File test.txt

이 예제에서는 값 $WhatIfPreference 이 False일 때 WhatIf 매개 변수를 사용하는 효과를 보여 있습니다.

파일이 있는지 확인하십시오.

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

WhatIf 매개 변수를 사용하여 파일 삭제 시도 결과를 확인합니다.

Remove-Item -Path .\test2.txt -WhatIf
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".

파일이 삭제되지 않았는지 확인합니다.

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

이 예제에서는 값인 True로 설정된 변수의 $WhatIfPreference 효과를 보여줍니다. 파일을 삭제하는 데 사용하면 Remove-Item 파일의 경로가 표시되지만 파일은 삭제되지 않습니다.

파일을 삭제하려고 시도합니다. 실행될 경우 Remove-Item 발생할 수 있는 일에 대한 메시지가 표시되지만 파일은 삭제되지 않습니다.

$WhatIfPreference = "True"
Remove-Item -Path .\test2.txt
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".

파일을 삭제하지 않았는지 확인하는 데 사용합니다 Get-ChildItem .

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

이 예제에서는 값 $WhatIfPreference 이 True일 때 파일을 삭제하는 방법을 보여줍니다. 값이 1인 WhatIf 매개 변수를 $false사용합니다. 파일이 삭제되었는지 확인하는 데 사용합니다 Get-ChildItem .

Remove-Item -Path .\test2.txt -WhatIf:$false
Get-ChildItem -Path .\test2.txt
Get-ChildItem : Cannot find path 'C:\Test\test2.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -Path .\test2.txt

다음은 WhatIf를 지원하지 않고 WhatIfStop-ProcessGet-Process 지원하는 cmdlet의 예입니다. $WhatIfPreference 변수의 값이 True입니다.

Get-Process는 WhatIf를 지원하지 않습니다. 명령이 실행되면 Winword 프로세스가 표시됩니다.

Get-Process -Name Winword
 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
    130   119.84     173.38       8.39   15024   4 WINWORD

Stop-Process 는 WhatIf를 지원 합니다. Winword 프로세스가 중지되지 않습니다.

Stop-Process -Name Winword
What if: Performing the operation "Stop-Process" on target "WINWORD (15024)".

값이 있는 Stop-Process WhatIf 매개 변수를 사용하여 WhatIf 동작을 재정의$false할 수 있습니다. Winword 프로세스가 중지되었습니다.

Stop-Process -Name Winword -WhatIf:$false

Winword 프로세스가 중지되었는지 확인하려면 .를 사용합니다Get-Process.

Get-Process -Name Winword
Get-Process : Cannot find a process with the name "Winword".
  Verify the process name and call the cmdlet again.
At line:1 char:1
+ Get-Process -Name Winword

참고 항목