Cmdlet에서 확인 요청
Cmdlet은 Windows PowerShell 환경 외부에 있는 시스템을 변경하려고 할 때 확인을 요청해야 합니다. 예를 들어 cmdlet이 사용자 계정을 추가하거나 프로세스를 중지하려는 경우 cmdlet은 계속 진행하기 전에 사용자의 확인이 필요합니다. 반면, cmdlet이 Windows PowerShell 변수를 변경하려고 하는 경우 cmdlet에 확인이 필요하지 않습니다.
확인 요청을 수행하려면 cmdlet이 확인 요청을 지원함을 나타내야 하며, System.Management.Automation.Cmdlet.ShouldProcess 호출하고 System.Management.Automation.Cmdlet.ShouldContinue (선택 사항) 메서드를 확인 요청 메시지를 표시해야 합니다.
확인 요청 지원
확인 요청을 지원하려면 cmdlet이 cmdlet 특성의 SupportsShouldProcess
매개 변수를 true
설정해야 합니다. 이렇게 하면 Windows PowerShell에서 제공하는 Confirm
및 WhatIf
cmdlet 매개 변수를 사용할 수 있습니다.
Confirm
매개 변수를 사용하면 사용자가 확인 요청이 표시되는지 여부를 제어할 수 있습니다.
WhatIf
매개 변수를 사용하면 cmdlet이 메시지를 표시할지 또는 해당 작업을 수행해야 하는지 여부를 결정할 수 있습니다.
Confirm
및 WhatIf
매개 변수를 cmdlet에 수동으로 추가하지 마세요.
다음 예제에서는 확인 요청을 지원하는 Cmdlet 특성 선언을 보여 줍니다.
[Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1",
SupportsShouldProcess = true)]
확인 요청 메서드 호출
cmdlet 코드에서 시스템을 변경하는 작업이 수행되기 전에 System.Management.Automation.Cmdlet.ShouldProcess 메서드를 호출합니다. 호출이 false
값을 반환하는 경우 작업이 수행되지 않고 cmdlet이 다음 작업을 처리하도록 cmdlet을 디자인합니다.
ShouldContinue 메서드 호출
대부분의 cmdlet은 System.Management.Automation.Cmdlet.ShouldProcess 메서드만 사용하여 확인을 요청합니다. 그러나 경우에 따라 추가 확인이 필요할 수 있습니다. 이러한 경우 System.Management.Automation.Cmdlet.ShouldProcess 호출을 System.Management.Automation.Cmdlet.ShouldContinue 메서드를 호출하여 보완합니다. 이렇게 하면 cmdlet 또는 공급자가 확인 프롬프트에 대한 모든 응답에 대한 예의 범위를 보다 세밀하게 제어할 수 있습니다.
cmdlet이 System.Management.Automation.Cmdlet.ShouldContinue 메서드를 호출하는 경우 cmdlet은 Force
스위치 매개 변수도 제공해야 합니다. 사용자가 cmdlet을 호출할 때 사용자가 Force
지정하는 경우 cmdlet은 여전히 system.Management.Automation.Cmdlet.ShouldProcess 호출해야 하지만 System.Management.Automation.Cmdlet.ShouldContinue 호출을 무시해야 합니다.
System.Management.Automation.Cmdlet.ShouldContinue 사용자에게 메시지를 표시할 수 없는 비대화형 환경에서 호출될 때 예외를 throw합니다.
Force
매개 변수를 추가하면 비대화형 환경에서 명령을 호출할 때 명령을 계속 수행할 수 있습니다.
다음 예제에서는 System.Management.Automation.Cmdlet.ShouldProcess 및 system.Management.Automation.Cmdlet.ShouldContinue 호출하는 방법을 보여 줍니다.
if (ShouldProcess (...) )
{
if (Force || ShouldContinue(...))
{
// Add code that performs the operation.
}
}
System.Management.Automation.Cmdlet.ShouldProcess 호출의 동작은 cmdlet이 호출되는 환경에 따라 달라질 수 있습니다. 이전 지침을 사용하면 호스트 환경에 관계없이 cmdlet이 다른 cmdlet과 일관되게 동작하도록 할 수 있습니다.
System.Management.Automation.Cmdlet.ShouldProcess 메서드를 호출하는 예제는 확인요청하는 방법을 참조하세요.
영향 수준 지정
cmdlet을 만들 때 변경의 영향 수준(심각도)을 지정합니다. 이렇게 하려면 Cmdlet 특성의 ConfirmImpact
매개 변수 값을 높음, 보통 또는 낮음으로 설정합니다. cmdlet에 대한 SupportsShouldProcess
매개 변수를 지정하는 경우에만 ConfirmImpact
값을 지정할 수 있습니다.
대부분의 cmdlet의 경우 ConfirmImpact
명시적으로 지정할 필요가 없습니다. 대신 매개 변수의 기본 설정(보통)을 사용합니다.
ConfirmImpact
높음으로 설정하면 작업이 기본적으로 확인됩니다. 하드 디스크 볼륨 다시 포맷과 같은 매우 중단이 큰 작업에 대해 이 설정을 예약합니다.
비확인 메서드 호출
cmdlet 또는 공급자가 메시지를 보내야 하지만 확인을 요청하지 않으면 다음 세 가지 메서드를 호출할 수 있습니다. System.Management.Automation.Cmdlet.WriteObject 출력이 cmdlet 또는 공급자의 일반 출력과 혼합되어 스크립트 작성이 어렵기 때문에 System.Management.Automation.Cmdlet.WriteObject 메서드를 사용하여 이러한 형식의 메시지를 보내지 마세요.
사용자에게 주의를 기울이고 작업을 계속하기 위해 cmdlet 또는 공급자는 System.Management.Automation.Cmdlet.WriteWarning 메서드를 호출할 수 있습니다.
사용자가
Verbose
매개 변수를 사용하여 검색할 수 있는 추가 정보를 제공하기 위해 cmdlet 또는 공급자는 System.Management.Automation.Cmdlet.WriteVerbose 메서드를 호출할 수 있습니다.다른 개발자 또는 제품 지원을 위해 디버깅 수준 세부 정보를 제공하기 위해 cmdlet 또는 공급자는 System.Management.Automation.Cmdlet.WriteDebug 메서드를 호출할 수 있습니다. 사용자는
Debug
매개 변수를 사용하여 이 정보를 검색할 수 있습니다.
Cmdlet 및 공급자는 Windows PowerShell 외부에서 시스템을 변경하는 작업을 수행하기 전에 먼저 다음 메서드를 호출하여 확인을 요청합니다.
이렇게 하려면 System.Management.Automation.Cmdlet.ShouldProcess 메서드를 호출하여 사용자가 명령을 호출하는 방법에 따라 작업을 확인하라는 메시지를 표시합니다.
또한 참조하십시오
PowerShell