간단한 설명
PowerShell의 동작을 사용자 지정하는 변수입니다.
긴 설명
PowerShell에는 해당 동작을 사용자 지정할 수 있는 변수 집합이 포함되어 있습니다. 이러한 기본 설정 변수는 GUI 기반 시스템의 옵션처럼 작동합니다.
기본 설정 변수는 PowerShell 운영 환경에 영향을 줍니다. 모든 명령은 환경에서 실행됩니다. 일부 cmdlet에는 특정 명령에 대한 기본 설정 동작을 재정의할 수 있는 매개 변수가 있습니다.
다음 표에서는 기본 설정 변수와 기본값을 나열합니다.
PowerShell에는 사용자 기본 설정을 저장하는 다음과 같은 환경 변수가 포함되어 있습니다. 이러한 환경 변수에 대한 자세한 내용은 about_Environment_Variables참조하세요.
$Env:PSExecutionPolicyPreference$Env:PSModulePath
메모
기본 설정 변수에 대한 변경 내용은 만들어진 범위 및 해당 하위 범위에만 적용됩니다. 예를 들어 기본 설정 변수를 단일 함수 또는 스크립트로 변경하는 효과를 제한할 수 있습니다. 자세한 내용은 about_Scopes참조하세요.
기본 설정 변수 작업
이 문서에서는 각 기본 설정 변수에 대해 설명합니다.
특정 기본 설정 변수의 현재 값을 표시하려면 변수의 이름을 입력합니다. 예를 들어 다음 명령은 $ConfirmPreference 변수의 값을 표시합니다.
$ConfirmPreference
High
변수의 값을 변경하려면 할당 문을 사용합니다. 예를 들어 다음 문은 $ConfirmPreference 매개 변수의 값을 Medium변경합니다.
$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 경우 powerShell은 cmdlet 또는 함수를 실행하기 전에 자동으로 메시지를 표시하지 않습니다.
세션의 모든 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
[?] Help (default is "Y"):
다음 예제에서는 $ConfirmPreference 값을 중간변경하는 효과를 보여 있습니다. 대부분의 cmdlet 및 함수는 중간 위험이므로 자동으로 확인됩니다. 단일 명령에 대한 확인 프롬프트를 표시하지 않으면 값이 $false 매개 변수를 사용합니다.
$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
[?] Help (default is "Y"):
Remove-Item -Path C:\temp3.txt -Confirm:$false
$DebugPreference
PowerShell이 스크립트, cmdlet 또는 공급자 또는 명령줄의 Write-Debug 명령에 의해 생성된 디버깅 메시지에 응답하는 방법을 결정합니다.
$DebugPreference 변수는 ActionPreference 열거형 값 중 하나를 사용합니다. SilentlyContinue, 중지, 계속, Inquire, 무시, 일시 중단또는 중단.
일부 cmdlet은 일반적으로 프로그래머 및 기술 지원 전문가를 위해 설계된 기술 메시지인 디버깅 메시지를 표시합니다. 기본적으로 디버깅 메시지는 표시되지 않지만 $DebugPreference값을 변경하여 디버깅 메시지를 표시할 수 있습니다.
디버그 cmdlet의 일반적인 매개 변수를 사용하여 특정 명령에 대한 디버깅 메시지를 표시하거나 숨길 수 있습니다. 자세한 내용은 about_CommonParameters참조하세요.
유효한 값은 다음과 같습니다.
- 중단 - 오류가 발생하거나 예외가 발생할 때 디버거를 입력합니다.
- 중지: 디버그 메시지를 표시하고 실행을 중지합니다. 콘솔에 오류를 씁니다.
- Inquire: 디버그 메시지를 표시하고 계속할지 여부를 묻습니다.
- 계속: 디버그 메시지를 표시하고 실행을 계속합니다.
- SilentlyContinue: (기본값) 효과가 없습니다. 디버그 메시지가 표시되지 않으며 중단 없이 실행이 계속됩니다.
명령에 디버그 공통 매개 변수를 추가하면 명령이 디버깅 메시지를 생성하도록 구성된 경우 $DebugPreference 변수의 값을 계속변경합니다.
예제
다음 예제에서는 명령줄에 $DebugPreference 명령을 입력할 때 Write-Debug 값을 변경하는 효과를 보여 줍니다.
변경 내용은 cmdlet 및 스크립트에서 생성된 메시지를 포함하여 모든 디버깅 메시지에 영향을 줍니다. 예제에서는 디버그 매개 변수를 보여 줍니다. 이 매개 변수는 단일 명령과 관련된 디버깅 메시지를 표시하거나 숨깁니다.
이 예제에서는 $DebugPreference 변수의 기본값인 SilentlyContinue효과를 보여 있습니다. 기본적으로 Write-Debug cmdlet의 디버그 메시지는 표시되지 않으며 처리가 계속됩니다.
디버그 매개 변수를 사용하면 단일 명령에 대한 기본 설정이 재정의됩니다. 디버그 메시지가 표시됩니다.
$DebugPreference
SilentlyContinue
Write-Debug -Message "Hello, World"
Write-Debug -Message "Hello, World" -Debug
DEBUG: Hello, World
이 예제에서는 $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
이 예제에서는 $DebugPreferenceInquire 값으로 설정되는 효과를 보여줍니다. 디버그 메시지가 표시되고 사용자에게 확인 메시지가 표시됩니다.
$DebugPreference = "Inquire"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [?] Help (default is "Y"):
이 예제에서는 Debug 매개 변수와 $false 값을 사용하여 단일 명령에 대한 메시지를 표시하지 않습니다. 디버그 메시지가 표시되지 않고 처리가 계속됩니다.
Write-Debug -Message "Hello, World" -Debug:$false
$ErrorActionPreference
Cmdlet 처리를 중지하지 않는 오류인 종료되지 않는 오류에 PowerShell이 응답하는 방법을 결정합니다. 예를 들어 명령줄 또는 스크립트, cmdlet 또는 공급자(예: Write-Error cmdlet에서 생성된 오류)입니다.
$ErrorActionPreference 변수는 ActionPreference 열거형 값 중 하나를 사용합니다. SilentlyContinue, 중지, 계속, Inquire, 무시, 일시 중단또는 중단.
cmdlet의 ErrorAction 공통 매개 변수를 사용하여 특정 명령에 대한 기본 설정을 재정의할 수 있습니다.
유효한 값은 다음과 같습니다.
- 중단 - 오류가 발생하거나 예외가 발생할 때 디버거를 입력합니다.
- 계속: (기본값) 오류 메시지를 표시하고 실행을 계속합니다.
-
무시: 오류 메시지를 표시하지 않으며 명령을 계속 실행합니다.
무시 값은 저장된 기본 설정으로 사용되지 않고 명령별 사용을 위한 것입니다.
무시는
$ErrorActionPreference변수에 유효한 값이 아닙니다. - Inquire: 오류 메시지를 표시하고 계속할지 여부를 묻습니다.
- SilentlyContinue: 효과가 없습니다. 오류 메시지가 표시되지 않고 중단 없이 실행이 계속됩니다.
- 중지: 오류 메시지를 표시하고 실행을 중지합니다. 생성된 오류 외에도 Stop 값은 오류 스트림에 ActionPreferenceStopException 개체를 생성합니다.
-
일시 중단: 추가 조사를 허용하도록 워크플로 작업을 자동으로 일시 중단합니다. 조사 후 워크플로를 다시 시작합니다.
Suspend 값은 저장된 기본 설정으로 사용되지 않고 명령별 사용을 위한 것입니다.
일시 중단
$ErrorActionPreference변수에 유효한 값이 아닙니다.
$ErrorActionPreference 및 ErrorAction 매개 변수는 powerShell이 cmdlet 처리를 중지하는 종료 오류에 응답하는 방식에 영향을 주지 않습니다.
ErrorAction 공통 매개 변수에 대한 자세한 내용은 about_CommonParameters참조하세요.
많은 네이티브 명령은 추가 정보를 위한 대체 스트림으로 stderr 씁니다. 이 동작은 오류를 살펴볼 때 혼동을 일으키거나 $ErrorActionPreference 출력을 음소거하는 상태로 설정된 경우 사용자에게 추가 출력 정보가 손실될 수 있습니다.
PowerShell 7.2부터 리디렉션 연산자(2>&1)를 사용하는 경우와 같이 네이티브 명령에서 리디렉션된 오류 레코드는 $Error 변수에 기록되지 않으며 $ErrorActionPreference 기본 설정 변수는 리디렉션된 출력에 영향을 주지 않습니다.
PowerShell 7.3에는 stderr 기록된 메시지를 처리하는 방법을 제어할 수 있는 실험적 기능이 추가되었습니다.
자세한 내용은 $PSNativeCommandUseErrorActionPreference.
예제
다음 예제에서는 $ErrorActionPreference 변수의 다양한 값의 효과를 보여 줍니다.
ErrorAction 매개 변수는 $ErrorActionPreference 값을 재정의하는 데 사용됩니다.
이 예제에서는 $ErrorActionPreference 기본값인 계속보여줍니다. 종료되지 않는 오류가 생성됩니다. 메시지가 표시되고 처리가 계속됩니다.
# 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: Test Error
Hello World
이 예제에서는 Inquire $ErrorActionPreference 기본값을 보여 있습니다. 오류가 생성되고 작업에 대한 프롬프트가 표시됩니다.
# 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: Test Error
ErrorRecord : Test Error
WasThrownFromThrowStatement : False
TargetSite : System.Collections.ObjectModel.Collection`1[System.Management.Automation.PSObject]
Invoke(System.Collections.IEnumerable)
StackTrace : at System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input)
at Microsoft.PowerShell.Executor.ExecuteCommandHelper(Pipeline tempPipeline,
Exception& exceptionThrown, ExecutionOptions options)
Message : The running command stopped because the preference variable "ErrorActionPreference" or
common parameter is set to Stop: Test Error
Data : {System.Management.Automation.Interpreter.InterpretedFrameInfo}
InnerException :
HelpLink :
Source : System.Management.Automation
HResult : -2146233087
Write-Error: Test Error
$ErrorView
PowerShell에서 오류 메시지의 표시 형식을 결정합니다.
$ErrorView 변수는 ErrorView 열거형 값 중 하나를 사용합니다. NormalView, CategoryView또는 ConciseView.
유효한 값은 다음과 같습니다.
ConciseView: (기본값) 고급 모듈 작성기를 위한 간결한 오류 메시지와 리팩터링된 보기를 제공합니다. PowerShell 7.2부터 명령줄 또는 스크립트 모듈에서 오류가 발생한 경우 출력은 한 줄 오류 메시지입니다. 그렇지 않으면 오류가 포함된 여러 줄 오류 메시지와 해당 줄에서 발생하는 위치를 보여 주는 오류에 대한 포인터가 표시됩니다. 터미널에서 가상 터미널을 지원하는 경우 ANSI 색 코드는 색 악센트를 제공하는 데 사용됩니다. 강조 색은
$Host.PrivateData.ErrorAccentColor변경할 수 있습니다. 내부 예외를 포함하여 정규화된 오류에 대한 포괄적인 세부 보기에Get-Errorcmdlet을 사용합니다.ConciseView PowerShell 7에 추가되었습니다.
NormalView: 대부분의 사용자를 위해 설계된 자세한 보기입니다. 오류에 대한 설명과 오류와 관련된 개체의 이름으로 구성됩니다.
CategoryView: 프로덕션 환경을 위해 설계된 간결하고 구조화된 뷰입니다. 형식은 다음과 같습니다.
{Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}
CategoryView필드에 대한 자세한 내용은 ErrorCategoryInfo 클래스를 참조하세요.
예제
이 예제에서는 $ErrorView 값이 기본값인 ConciseView오류가 나타나는 방법을 보여 줍니다.
Get-ChildItem 존재하지 않는 디렉터리를 찾는 데 사용됩니다.
Get-ChildItem -Path 'C:\NoRealDirectory'
Get-ChildItem: Can't find path 'C:\NoRealDirectory' because it doesn't exist.
이 예제에서는 $ErrorView 값이 기본값인 ConciseView오류가 나타나는 방법을 보여 줍니다.
Script.ps1 실행되고 Get-Item 문에서 오류를 throw합니다.
./Script.ps1
Get-Item: C:\Script.ps1
Line |
11 | Get-Item -Path .\stuff
| ^ Can't find path 'C:\demo\stuff' because it doesn't exist.
이 예제에서는 $ErrorView 값이 NormalView변경될 때 오류가 나타나는 방법을 보여 줍니다.
Get-ChildItem 존재하지 않는 파일을 찾는 데 사용됩니다.
Get-ChildItem -Path C:\nofile.txt
Get-ChildItem : Can't find path 'C:\nofile.txt' because it doesn't 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참조하세요.
다음 명령은 오류 배열의 가장 최근 오류와 연결된 ErrorRecord 개체를 사용하고 요소 0 목록의 개체 속성에 서식을 지정합니다.
$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으로 보냅니다.
결과는 이름 열의 상태와 그룹 열의 프로세스를 나열하는 테이블입니다. 열 레이블을 변경하려면 해시 테이블을 사용하고 about_Hash_Tables참조하세요. 자세한 내용은 Format-Table예제를 참조하세요.
$FormatEnumerationLimit현재 값을 찾습니다.
$FormatEnumerationLimit
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늘립니다.
Get-Service 및 Group-Object 사용하여 서비스를 표시합니다.
$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...
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, 중지, 계속, Inquire, 무시, 일시 중단또는 중단.
유효한 값은 다음과 같습니다.
- 중단 - 정보 스트림에 쓸 때 디버거를 입력합니다.
-
중지:
Write-Information명령이 발생하면 명령 또는 스크립트를 중지합니다. -
Inquire:
Write-Information명령에 지정한 정보 메시지를 표시한 다음 계속할지 여부를 묻습니다. - 계속: 정보 메시지를 표시하고 실행을 계속합니다.
- SilentlyContinue: (기본값) 효과가 없습니다. 정보 메시지는 표시되지 않으며 스크립트는 중단 없이 계속됩니다.
$Log*Event
Log*Event 기본 설정 변수는 이벤트 뷰어의 PowerShell 이벤트 로그에 기록되는 이벤트 유형을 결정합니다. 기본적으로 엔진 및 공급자 이벤트만 기록됩니다. 그러나 Log*Event 기본 설정 변수를 사용하여 명령에 대한 이벤트 로깅과 같은 로그를 사용자 지정할 수 있습니다.
Log*이벤트 기본 설정 변수는 다음과 같습니다.
-
$LogCommandHealthEvent: 명령 초기화 및 처리에서 오류 및 예외를 기록합니다. 기본값은$false(기록되지 않음)입니다. -
$LogCommandLifecycleEvent: 명령 검색에서 명령 및 명령 파이프라인 및 보안 예외의 시작 및 중지를 기록합니다. 기본값은$false(기록되지 않음)입니다. -
$LogEngineHealthEvent: 세션의 오류 및 실패를 기록합니다. 기본값은$true(기록됨)입니다. -
$LogEngineLifecycleEvent: 세션의 열기 및 닫기를 기록합니다. 기본값은$true(기록됨)입니다. -
$LogProviderHealthEvent: 읽기 및 쓰기 오류, 조회 오류 및 호출 오류와 같은 공급자 오류를 기록합니다. 기본값은$true(기록됨)입니다. -
$LogProviderLifecycleEvent: PowerShell 공급자의 추가 및 제거 로그입니다. 기본값은$true(기록됨)입니다. PowerShell 공급자에 대한 자세한 내용은 about_Providers참조하세요.
Log*이벤트사용하도록 설정하려면 $true값을 사용하여 변수를 입력합니다. 예를 들면 다음과 같습니다.
$LogCommandLifecycleEvent = $true
이벤트 형식을 사용하지 않도록 설정하려면 값이 $false변수를 입력합니다. 예를 들면 다음과 같습니다.
$LogCommandLifecycleEvent = $false
사용하도록 설정하는 이벤트는 현재 PowerShell 콘솔에만 적용됩니다. 구성을 모든 콘솔에 적용하려면 PowerShell 프로필에 변수 설정을 저장합니다. 자세한 내용은 about_Profiles참조하세요.
$MaximumHistoryCount
현재 세션의 명령 기록에 저장되는 명령 수를 결정합니다.
유효한 값: 1 - 32768 (Int32)
기본: 4096
명령 기록에 현재 저장된 명령 수를 확인하려면 다음을 입력합니다.
(Get-History).Count
세션 기록에 저장된 명령을 보려면 Get-History cmdlet을 사용합니다. 자세한 내용은 about_History참조하세요.
$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및 유니코드Encoding같은 인코딩 클래스에서 파생된 개체입니다.
기본: utF8Encoding 개체를.
예제
첫 번째 명령은 $OutputEncoding값을 찾습니다. 값은 인코딩 개체이므로 EncodingName 속성만 표시합니다.
$OutputEncoding.EncodingName
나머지 예제에서는 hexdump.ps1 저장된 다음 PowerShell 스크립트를 사용하여 $OutputEncoding동작을 보여 줍니다.
$inputStream = [Console]::OpenStandardInput()
try {
$buffer = [byte[]]::new(1024)
$read = $inputStream.Read($buffer, 0, $buffer.Length)
Format-Hex -InputObject $buffer -Count $read
} finally {
$inputStream.Dispose()
}
다음 예제에서는 위에서 만든 café 파이프될 때 hexdump.ps1 문자열 값이 바이트로 인코딩되는 방법을 보여 냅니다. 문자열 값이 UTF8Encoding 체계를 사용하여 인코딩됨을 보여 줍니다.
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <28873E25>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 63 61 66 C3 A9 0D 0A caf�
다음 예제에서는 인코딩을 유니코드Encoding변경할 때 바이트가 어떻게 변경되는지 보여 있습니다.
$OutputEncoding = [System.Text.Encoding]::Unicode
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <515A7DC3>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 FF FE 63 00 61 00 66 00 E9 00 0D 00 0A 00 ÿþc a f é � �
$ProgressPreference
Write-Progress cmdlet에서 생성된 진행률 표시줄과 같이 스크립트, cmdlet 또는 공급자가 생성한 진행률 업데이트에 PowerShell이 응답하는 방법을 결정합니다.
Write-Progress cmdlet은 명령의 상태를 표시하는 진행률 표시줄을 만듭니다.
$ProgressPreference 변수는 ActionPreference 열거형 값 중 하나를 사용합니다. SilentlyContinue, 중지, 계속, Inquire, 무시, 일시 중단또는 중단.
유효한 값은 다음과 같습니다.
- 중단 - 진행률 스트림에 쓸 때 디버거를 입력합니다.
- 중지: 진행률 표시줄을 표시하지 않습니다. 대신 오류 메시지를 표시하고 실행을 중지합니다.
-
Inquire: 진행률 표시줄을 표시하지 않습니다. 계속할 수 있는 권한을 묻는 메시지가 표시됩니다.
Y또는A회신하면 진행률 표시줄이 표시됩니다. - 계속: (기본값) 진행률 표시줄을 표시하고 실행을 계속합니다.
- 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: 모듈의 자동 가져오기를 사용하지 않도록 설정합니다. 모듈을 가져오려면Import-Modulecmdlet을 사용합니다.
모듈의 자동 가져오기에 대한 자세한 내용은 about_Modules참조하세요.
$PSNativeCommandArgumentPassing
PowerShell 7.3은 네이티브 명령의 명령줄을 구문 분석하는 방식을 변경했습니다.
새 $PSNativeCommandArgumentPassing 기본 설정 변수는 이 동작을 제어합니다.
주의
새 동작은 이전 동작과 호환성이 손상되는 변경입니다. 이렇게 하면 네이티브 애플리케이션을 호출할 때 다양한 문제를 해결하는 스크립트 및 자동화가 중단됩니다.
자동 변수 $PSNativeCommandArgumentPassing 런타임에 동작을 선택할 수 있습니다. 유효한 값은 Legacy, Standard및 Windows.
Legacy 역사적인 행동입니다.
$PSNativeCommandArgumentPassing 변수는 기본적으로 정의되지만 값은 플랫폼별로 다릅니다.
- Windows에서 기본 설정은
Windows설정됩니다. - 비 Windows 플랫폼에서는 기본 설정이
Standard. -
$PSNativeCommandArgumentPassing변수를 제거한 경우 PowerShell은Standard동작을 사용합니다.
Windows 및 Standard 모드의 동작은 동일하지만 Windows 모드에서 PowerShell은 다음 파일을 실행할 때 인수 전달의 Legacy 동작을 사용합니다.
cmd.execscript.exefind.exesqlcmd.exewscript.exe- 다음으로 끝나는 파일:
.bat.cmd.js.vbs.wsf
$PSNativeCommandArgumentPassing
Legacy 또는 Standard설정된 경우 파서는 이러한 파일을 확인하지 않습니다. 새 동작의 예제는 about_Parsing참조하세요.
PowerShell 7.3에는 네이티브 명령에 대한 매개 변수 바인딩을 추적하는 기능도 추가되었습니다. 자세한 내용은 추적 명령 참조하세요.
$PSNativeCommandUseErrorActionPreference
$PSNativeCommandUseErrorActionPreference
$true경우 0이 아닌 종료 코드가 있는 네이티브 명령은 $ErrorActionPreference따라 오류를 실행합니다.
robocopy와 같은 일부 네이티브 명령은 0이 아닌 종료 코드를 사용하여 오류 이외의 정보를 나타낼 있습니다. 이러한 경우 일시적으로 동작을 사용하지 않도록 설정하고 0이 아닌 종료 코드가 오류를 발생시키는 것을 방지할 수 있습니다.
& {
# Disable $PSNativeCommandUseErrorActionPreference for this scriptblock
$PSNativeCommandUseErrorActionPreference = $false
robocopy.exe D:\reports\operational "\\reporting\ops" CY2022Q4.md
if ($LASTEXITCODE -gt 8) {
throw "robocopy failed with exit code $LASTEXITCODE"
}
}
이 예제에서는 $PSNativeCommandUseErrorActionPreference 변수가 scriptblock 내에서 변경됩니다. 변경 내용은 scriptblock에 로컬입니다. scriptblock이 종료되면 변수가 이전 값으로 되돌아갑니다.
$PSSessionApplicationName
Web Services for Management(WS-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/
기본값을 재정의하고 , New-PSSession또는 Enter-PSSession cmdlet의 Invoke-Command 매개 변수를 사용하여 특정 세션에 대해 다른 세션 구성을 선택할 수 있습니다.
언제든지 이 변수의 값을 변경할 수 있습니다. 이렇게 하면 선택한 세션 구성이 원격 컴퓨터에 있어야 합니다. 그렇지 않으면 세션 구성을 사용하는 세션을 만드는 명령이 실패합니다.
이 기본 설정 변수는 원격 사용자가 이 컴퓨터에 연결하는 세션을 만들 때 사용되는 로컬 세션 구성을 결정하지 않습니다. 그러나 로컬 세션 구성에 대한 사용 권한을 사용하여 사용할 수 있는 사용자를 결정할 수 있습니다.
$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_Remote 및 about_PSSessions참조하세요.
$PSSessionOption 기본 설정 변수의 값을 변경하려면 New-PSSessionOption cmdlet을 사용하여 원하는 옵션 값으로 PSSessionOption 개체를 만듭니다. 출력을 $PSSessionOption변수에 저장합니다.
$PSSessionOption = New-PSSessionOption -NoCompression
모든 PowerShell 세션에서 $PSSessionOption 기본 설정 변수를 사용하려면 PowerShell 프로필에 New-PSSessionOption 변수를 만드는 $PSSessionOption 명령을 추가합니다. 자세한 내용은 about_Profiles참조하세요.
특정 원격 세션에 대한 사용자 지정 옵션을 설정할 수 있습니다. 설정한 옵션이 시스템 기본값과 $PSSessionOption 기본 설정 변수의 값보다 우선합니다.
사용자 지정 세션 옵션을 설정하려면 New-PSSessionOption cmdlet을 사용하여 PSSessionOption 개체를 만듭니다. 그런 다음 PSSessionOption 개체를 , New-PSSession및 Enter-PSSession같은 세션을 만드는 cmdlet에서 Invoke-Command 매개 변수의 값으로 사용합니다.
$PSStyle
PowerShell 7.2에서 이제 $PSStyle 자동 변수에 액세스하여 ANSI 문자열 출력의 렌더링을 보고 변경할 수 있습니다.
$PSStyle
PSStyle 클래스의 인스턴스입니다. 이 클래스의 멤버는 터미널에서 텍스트 렌더링을 제어하는 ANSI 이스케이프 시퀀스를 포함하는 문자열을 정의합니다.
기본 멤버는 이름에 매핑된 ANSI 이스케이프 시퀀스의 문자열을 반환합니다. 값은 사용자 지정을 허용하도록 설정할 수 있습니다. 속성 이름을 사용하면 탭 완성을 사용하여 데코레이팅된 문자열을 더 쉽게 만들 수 있습니다. 예를 들어:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
Background 및 포그라운드 멤버에는 24비트 색을 지정하는 FromRgb() 메서드도 있습니다.
$PSStyle대한 자세한 내용은 about_ANSI_Terminals참조하세요.
$Transcript
Start-Transcript 기록 파일의 이름과 위치를 지정하는 데 사용됩니다.
Path 매개 변수에 대한 값을 지정하지 않으면 Start-Transcript$Transcript 전역 변수 값의 경로를 사용합니다. 이 변수를 만들지 않은 경우 Start-Transcript 기본 이름을 사용하여 다음 위치에 대본을 저장합니다.
- Windows:
$HOME\Documents - Linux 또는 macOS에서:
$HOME
기본 파일 이름은 PowerShell_transcript.<computername>.<random>.<timestamp>.txt.
$VerbosePreference
PowerShell이 스크립트, cmdlet 또는 공급자에 의해 생성된 자세한 정보 표시 메시지에 응답하는 방법(예: Write-Verbose cmdlet에서 생성된 메시지)을 결정합니다. 자세한 내용은 명령을 실행하기 위해 수행된 작업을 설명합니다.
기본적으로 자세한 내용은 표시되지 않지만 $VerbosePreference값을 변경하여 이 동작을 변경할 수 있습니다.
$VerbosePreference 변수는 ActionPreference 열거형 값 중 하나를 사용합니다. SilentlyContinue, 중지, 계속, Inquire, 무시, 일시 중단또는 중단.
유효한 값은 다음과 같습니다.
- 중단 - 자세한 정보 표시 스트림에 쓸 때 디버거를 입력합니다.
- 중지 : 자세한 정보 표시 메시지와 오류 메시지를 표시한 다음 실행을 중지합니다.
- Inquire: 자세한 정보 표시 메시지를 표시한 다음 계속할지 여부를 묻는 프롬프트를 표시합니다.
- 계속: 자세한 정보 표시 메시지를 표시한 다음 실행을 계속합니다.
- SilentlyContinue: (기본값) 자세한 정보를 표시하지 않습니다. 실행을 계속합니다.
cmdlet의 자세한 정보 표시 공통 매개 변수를 사용하여 특정 명령에 대한 자세한 정보 표시 메시지를 표시하거나 숨길 수 있습니다. 자세한 내용은 about_CommonParameters참조하세요.
예제
다음 예제에서는 $VerbosePreference 서로 다른 값의 효과와 기본 설정 값을 재정의하는 자세한 정보 표시 매개 변수를 보여 줍니다.
이 예제에서는 SilentlyContinue 값의 효과를 보여 하며, 이것이 기본값입니다. 이 명령은 Message 매개 변수를 사용하지만 PowerShell 콘솔에 메시지를 쓰지 않습니다.
Write-Verbose -Message "Verbose message test."
자세한 정보 표시 매개 변수를 사용하면 메시지가 기록됩니다.
Write-Verbose -Message "Verbose message test." -Verbose
VERBOSE: Verbose message test.
이 예제에서는 계속 값의 효과를 보여줍니다.
$VerbosePreference 변수는 계속 설정되고 메시지가 표시됩니다.
$VerbosePreference = "Continue"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
이 예제에서는 Verbose 매개 변수와 $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."
이 예제에서는 Stop 값을 재정의하는 $false 값과 함께 Verbose 매개 변수를 사용합니다. 메시지가 표시되지 않습니다.
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 [?] Help (default is "Y"):
이 예제에서는 Verbose 매개 변수와 $false 값을 재정의하는 값을 사용합니다. 사용자에게 메시지가 표시되지 않고 메시지가 표시되지 않습니다.
Write-Verbose -Message "Verbose message test." -Verbose:$false
$WarningPreference
PowerShell이 스크립트, cmdlet 또는 공급자에 의해 생성된 경고 메시지에 응답하는 방법(예: Write-Warning cmdlet에서 생성된 메시지)을 결정합니다.
기본적으로 경고 메시지가 표시되고 실행이 계속되지만 $WarningPreference값을 변경하여 이 동작을 변경할 수 있습니다.
$WarningPreference 변수는 ActionPreference 열거형 값 중 하나를 사용합니다. SilentlyContinue, 중지, 계속, Inquire, 무시, 일시 중단또는 중단.
유효한 값은 다음과 같습니다.
- 중단 - 경고 메시지가 기록될 때 디버거를 입력합니다.
- 중지 : 경고 메시지와 오류 메시지를 표시한 다음 실행을 중지합니다.
- Inquire: 경고 메시지를 표시한 다음 계속할 수 있는 권한을 묻는 메시지를 표시합니다.
- 계속: (기본값) 경고 메시지를 표시한 다음 실행을 계속합니다.
- SilentlyContinue: 경고 메시지를 표시하지 않습니다. 실행을 계속합니다.
WarningAction cmdlet의 일반적인 매개 변수를 사용하여 PowerShell이 특정 명령의 경고에 응답하는 방법을 확인할 수 있습니다. 자세한 내용은 about_CommonParameters참조하세요.
예제
다음 예제에서는 $WarningPreference다양한 값의 효과를 보여 줍니다.
WarningAction 매개 변수는 기본 설정 값을 재정의합니다.
이 예제에서는 기본값인 계속효과를 보여줍니다.
$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 [?] Help (default is "Y"):
이 예제에서는 WarningAction 매개 변수를 값 SilentlyContinue사용합니다. 명령이 계속 실행되고 메시지가 표시되지 않습니다.
$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 [?] Help (default is "Y"):
$WhatIfPreference
WhatIf 지원하는 모든 명령에 대해 자동으로 사용하도록 설정되는지 여부를 결정합니다. whatIf 경우 cmdlet은 명령의 예상 효과를 보고하지만 명령을 실행하지는 않습니다.
유효한 값은 다음과 같습니다.
- False(0사용 안 함): (기본값) WhatIf 자동으로 사용하도록 설정되지 않습니다. 수동으로 사용하도록 설정하려면 cmdlet의 WhatIf 매개 변수를 사용합니다.
-
True(1사용): WhatIf 지원하는 모든 명령에서 자동으로 사용하도록 설정됩니다. 사용자는 WhatIf 매개 변수를 False 사용하여 수동으로 사용하지 않도록 설정할 수 있습니다(예:
-WhatIf:$false).
예제
다음 예제에서는 $WhatIfPreference다양한 값의 효과를 보여 줍니다.
WhatIf 매개 변수를 사용하여 특정 명령에 대한 기본 설정 값을 재정의하는 방법을 보여줍니다.
이 예제에서는 기본값으로 설정된 $WhatIfPreference 변수의 효과를 보여 False.
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
이 예제에서는 값이 false $WhatIfPreference때 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 경우 파일을 삭제하는 방법을 보여 있습니다. 값이 $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 Get-Process지원하는 whatIf 지원하지 않는 Stop-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 매개 변수를 값으로 사용하여 $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
참고하십시오
PowerShell