about_Preference_Variables
간단한 설명
PowerShell의 동작을 사용자 지정하는 변수입니다.
자세한 설명
PowerShell에는 해당 동작을 사용자 지정할 수 있는 변수 집합이 포함되어 있습니다. 이러한 기본 설정 변수는 GUI 기반 시스템의 옵션처럼 작동합니다.
기본 설정 변수는 PowerShell 운영 환경에 영향을 줍니다. 모든 명령은 환경에서 실행됩니다. 일부 cmdlet에는 특정 명령에 대한 기본 설정 동작을 재정의할 수 있는 매개 변수가 있습니다.
다음 표에서는 기본 설정 변수와 기본값을 나열합니다.
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
[?] 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
[?] 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
Continue로 변경됩니다.
예제
다음 예제에서는 명령줄에서 명령을 입력할 때 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
이 예제에서는 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 [?] Help (default is "Y"):
이 예제에서는 값이 있는 Debug 매개 변수를 $false
사용하여 단일 명령에 대한 메시지를 표시하지 않습니다. 디버그 메시지가 표시되지 않고 처리가 계속됩니다.
Write-Debug -Message "Hello, World" -Debug:$false
$ErrorActionPreference
Cmdlet 처리를 중지하지 않는 오류인 종료되지 않는 오류에 PowerShell이 응답하는 방법을 결정합니다. 예를 들어 명령줄 또는 스크립트, cmdlet 또는 공급자(예: cmdlet에서 Write-Error
생성된 오류)입니다.
변수는 SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend 또는 Break의 열거형 값 중 하나를 ActionPreference
사용합니다.$ErrorActionPreference
cmdlet의 ErrorAction 공통 매개 변수를 사용하여 특정 명령에 대한 기본 설정을 재정의할 수 있습니다.
유효한 값은 다음과 같습니다.
- 중단 - 오류가 발생하거나 예외가 발생할 때 디버거를 입력합니다.
- 계속: (기본값) 오류 메시지를 표시하고 계속 실행합니다.
- 무시: 오류 메시지를 표시하지 않으며 명령을 계속 실행합니다. Ignore 값은 저장된 기본 설정으로 사용되지 않고 명령별 사용을 위한 것입니다. 무시 는 변수에 유효한 값이
$ErrorActionPreference
아닙니다. - Inquire: 오류 메시지를 표시하고 계속할지 여부를 묻습니다.
- SilentlyContinue: 효과가 없습니다. 오류 메시지가 표시되지 않고 중단 없이 실행이 계속됩니다.
- 중지: 오류 메시지를 표시하고 실행을 중지합니다. 생성된 오류 외에도 Stop 값은 오류 스트림에 ActionPreferenceStopException 개체를 생성합니다.
- 일시 중단: 추가 조사를 허용하도록 워크플로 작업을 자동으로 일시 중단합니다. 조사 후 워크플로를 다시 시작합니다. Suspend 값은 저장된 기본 설정으로 사용되지 않고 명령별 사용을 위한 것입니다. 일시 중단 은 변수에 대한 유효한 값이
$ErrorActionPreference
아닙니다.
$ErrorActionPreference
및 ErrorAction 매개 변수는 cmdlet 처리를 중지하는 종료 오류에 PowerShell이 응답하는 방식에 영향을 주지 않습니다. ErrorAction 일반 매개 변수에 대한 자세한 내용은 about_CommonParameters 참조하세요.
많은 네이티브 명령이 추가 정보에 대한 대체 스트림으로 stderr
에 기록합니다. 이 동작은 오류를 살펴볼 때 혼동을 일으키거나 출력을 음소거하는 상태로 설정된 경우 $ErrorActionPreference
사용자에게 추가 출력 정보가 손실될 수 있습니다.
PowerShell 7.2부터 리디렉션 연산자()2>&1
를 사용하는 경우와 같이 네이티브 명령에서 리디렉션된 오류 레코드는 변수에 $Error
기록되지 않으며 기본 설정 변수 $ErrorActionPreference
는 리디렉션된 출력에 영향을 주지 않습니다.
PowerShell 7.3에는 메시지를 처리하는 stderr
방법을 제어할 수 있는 실험적 기능이 추가되었습니다.
자세한 내용은 $PSNativeCommandUseErrorActionPreference.
예제
다음 예제에서는 변수의 다양한 값의 효과를 보여 줍니다 $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: Test Error
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: 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
NormalView, CategoryView 또는 ConciseView의 열거형 값 중 하나를 ErrorView
사용합니다.
유효한 값은 다음과 같습니다.
ConciseView: (기본값) 고급 모듈 작성기를 위한 간결한 오류 메시지와 리팩터링된 보기를 제공합니다. PowerShell 7.2부터 명령줄 또는 스크립트 모듈에서 오류가 발생한 경우 출력은 한 줄 오류 메시지입니다. 그렇지 않으면 오류가 포함된 여러 줄 오류 메시지와 해당 줄에서 발생하는 위치를 보여 주는 오류에 대한 포인터가 표시됩니다. 터미널에서 가상 터미널을 지원하는 경우 ANSI 색 코드는 색 악센트를 제공하는 데 사용됩니다. 에서 강조 색을 변경할
$Host.PrivateData.ErrorAccentColor
수 있습니다. 내부 예외를 포함하여 정규화된 오류에 대한 포괄적인 세부 보기에 cmdlet을 사용합니다Get-Error
.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 참조하세요.
다음 명령은 오류 배열, 요소 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에서 도입되었습니다.
변수는 SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend 또는 Break의 열거형 값 중 하나를 ActionPreference
사용합니다.$InformationPreference
유효한 값은 다음과 같습니다.
- 중단 - 정보 스트림에 쓸 때 디버거를 입력합니다.
- 중지: 명령이 발생할 때 명령 또는 스크립트를 중지합니다
Write-Information
. - Inquire: 명령에서 지정한 정보 메시지를 표시한
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를 참조하세요.
$MaximumHistoryCount
현재 세션의 명령 기록에 저장되는 명령 수를 결정합니다.
유효한 값: 1 - 32768(Int32
)
기본값: 4096
명령 기록에 현재 저장된 명령 수를 확인하려면 다음을 입력합니다.
(Get-History).Count
세션 기록에 저장된 명령을 보려면 cmdlet을 Get-History
사용합니다. 자세한 내용은 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 및 UnicodeEncoding과 같은 인코딩 클래스에서 파생된 개체입니다.
기본값: 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()
}
다음 예제에서는 위에서 만든 값으로 hexdump.ps1
파이프될 때 문자열 값을 café
바이트로 인코딩하는 방법을 보여줍니다. 문자열 값이 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이 응답하는 방법을 결정합니다. cmdlet은 Write-Progress
명령의 상태를 표시하는 진행률 표시줄을 만듭니다.
변수는 SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend 또는 Break의 열거형 값 중 하나를 ActionPreference
사용합니다.$ProgressPreference
유효한 값은 다음과 같습니다.
- 중단 - 진행률 스트림에 쓸 때 디버거를 입력합니다.
- 중지: 진행률 표시줄을 표시하지 않습니다. 대신 오류 메시지를 표시하고 실행을 중지합니다.
- 조회: 진행률 표시줄을 표시하지 않습니다. 계속할 수 있는 권한을 묻는 메시지가 표시됩니다. 회신하거나
A
회Y
신하면 진행률 표시줄이 표시됩니다. - 계속: (기본값) 진행률 표시줄을 표시하고 실행을 계속합니다.
- 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 참조하세요.
$PSNativeCommandArgumentPassing
PowerShell 7.3은 네이티브 명령의 명령줄을 구문 분석하는 방식을 변경했습니다.
새 $PSNativeCommandArgumentPassing
기본 설정 변수는 이 동작을 제어합니다.
주의
새 동작은 이전 동작과 호환성이 손상되는 변경 입니다. 새로운 동작은 네이티브 애플리케이션을 호출할 때 발생하는 다양한 문제를 해결하는 스크립트와 자동화를 손상할 수 있습니다.
자동 변수 $PSNativeCommandArgumentPassing
를 사용하면 런타임에 동작을 선택할 수 있습니다. 유효한 값은 Legacy
, Standard
및 Windows
. Legacy
는 역사적인 동작입니다.
변수는 $PSNativeCommandArgumentPassing
기본적으로 정의되지만 값은 플랫폼별로 다릅니다.
- Windows에서 기본 설정은 .로 설정됩니다
Windows
. - Windows가 아닌 플랫폼에서는 기본 설정이 .로
Standard
설정됩니다. - 변수를
$PSNativeCommandArgumentPassing
제거한 경우 PowerShell은 이 동작을Standard
사용합니다.
모드에서 Windows
PowerShell은 다음 파일을 실행할 때 인수 전달 동작을 사용 Legacy
한다는 점을 제외하고 Windows
모드의 동작과 Standard
모드는 동일합니다.
cmd.exe
cscript.exe
find.exe
sqlcmd.exe
wscript.exe
- 다음으로 끝나는 파일:
.bat
.cmd
.js
.vbs
.wsf
둘 $PSNativeCommandArgumentPassing
중 하나 Legacy
또는 Standard
로 설정된 경우 파서는 이러한 파일을 확인하지 않습니다. 새 동작의 예제는 about_Parsing 참조하세요.
PowerShell 7.3에는 네이티브 명령에 대한 매개 변수 바인딩을 추적하는 기능도 추가되었습니다. 자세한 내용은 Trace-Command를 참조 하세요.
$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
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-PSSession
ConfigurationName 매개 변수를 사용하여 특정 세션에 대해 다른 세션 구성을 선택할 수 있습니다.
언제든지 이 변수의 값을 변경할 수 있습니다. 이렇게 하면 선택한 세션 구성이 원격 컴퓨터에 있어야 합니다. 그렇지 않으면 세션 구성을 사용하는 세션을 만드는 명령이 실패합니다.
이 기본 설정 변수는 원격 사용자가 이 컴퓨터에 연결하는 세션을 만들 때 사용되는 로컬 세션 구성을 결정하지 않습니다. 그러나 로컬 세션 구성에 대한 사용 권한을 사용하여 사용할 수 있는 사용자를 결정할 수 있습니다.
$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
값을 변경하려면 cmdlet을 New-PSSessionOption
사용하여 원하는 옵션 값으로 PSSessionOption 개체를 만듭니다. 라는 변수 $PSSessionOption
에 출력을 저장합니다.
$PSSessionOption = New-PSSessionOption -NoCompression
모든 PowerShell 세션에서 기본 설정 변수를 New-PSSessionOption
사용 $PSSessionOption
하려면 PowerShell 프로필에 변수를 $PSSessionOption
만드는 명령을 추가합니다. 자세한 내용은 about_Profiles를 참조하세요.
특정 원격 세션에 대한 사용자 지정 옵션을 설정할 수 있습니다. 설정한 옵션이 시스템 기본값 및 기본 설정 변수 값 $PSSessionOption
보다 우선합니다.
사용자 지정 세션 옵션을 설정하려면 cmdlet을 New-PSSessionOption
사용하여 PSSessionOption 개체를 만듭니다. 그런 다음, 세션을 만드는 New-PSSession
Enter-PSSession
Invoke-Command
cmdlet에서 SessionOption 매개 변수의 값으로 PSSessionOption 개체를 사용합니다.
$PSStyle
이제 PowerShell 7.2를 기준으로 자동 변수에 $PSStyle
액세스하여 ANSI 문자열 출력의 렌더링을 보고 변경할 수 있습니다. $PSStyle
는 PSStyle 클래스의 인스턴스입니다. 이 클래스의 멤버는 터미널에서 텍스트 렌더링을 제어하는 ANSI 이스케이프 시퀀스를 포함하는 문자열을 정의합니다.
기본 멤버는 이름에 매핑되는 ANSI 이스케이프 시퀀스의 문자열을 반환합니다. 값은 사용자 지정을 허용하도록 설정할 수 있습니다. 속성 이름을 사용하면 탭 완성을 사용하여 데코레이팅된 문자열을 더 쉽게 만들 수 있습니다. 예시:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
배경 및 전경 멤버에는 FromRgb()
24비트 색을 지정하는 메서드도 있습니다.
$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
Write-Verbose cmdlet에서 생성된 메시지와 같이 스크립트, cmdlet 또는 공급자가 생성한 자세한 메시지에 PowerShell이 응답하는 방법을 결정합니다. 자세한 내용은 명령을 실행하기 위해 수행된 작업을 설명합니다.
기본적으로 자세한 내용은 표시되지 않지만 값을 $VerbosePreference
변경하여 이 동작을 변경할 수 있습니다.
변수는 SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend 또는 Break의 열거형 값 중 하나를 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 [?] 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 또는 Break의 열거형 값 중 하나를 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 [?] 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 [?] 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-Process
를 Get-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
참고 항목
PowerShell