항목
기본 설정 변수
간단한 설명
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