다음을 통해 공유


Cmdlet 매개 변수에 별칭, 와일드카드 확장 및 도움말 추가

이 섹션에서는 Stop-Proc cmdlet의 매개 변수에 별칭, 와일드카드 확장 및 도움말 메시지를 추가하는 방법을 설명합니다(시스템수정하는 Cmdlet 만들기에 설명됨).

Stop-Proc cmdlet은 Get-Proc cmdlet을 사용하여 검색되는 프로세스를 중지하려고 시도합니다(첫 번째 cmdlet만들기에 설명됨).

Cmdlet 정의

cmdlet 만들기의 첫 번째 단계는 항상 cmdlet의 이름을 지정하고 cmdlet을 구현하는 .NET 클래스를 선언하는 것입니다. 시스템을 변경하기 위해 cmdlet을 작성하므로 그에 따라 이름을 지정해야 합니다. 이 cmdlet은 시스템 프로세스를 중지하기 때문에 System.Management.Automation.VerbsLifecycle 클래스에 정의된 동사 중지사용하며 명사 Proc 사용하여 프로세스를 나타냅니다. 승인된 cmdlet 동사에 대한 자세한 내용은 Cmdlet 동사 이름참조하세요.

다음 코드는 이 Stop-Proc cmdlet에 대한 클래스 정의입니다.

[Cmdlet(VerbsLifecycle.Stop, "proc",
        SupportsShouldProcess = true)]
public class StopProcCommand : Cmdlet

시스템 수정을 위한 매개 변수 정의

cmdlet은 시스템 수정 및 사용자 피드백을 지원하는 매개 변수를 정의해야 합니다. cmdlet은 cmdlet이 일종의 식별자에 의해 시스템을 수정할 수 있도록 Name 매개 변수 또는 동등한 매개 변수를 정의해야 합니다. 또한 cmdlet은 Force 정의하고 passThru 매개 변수를 합니다. 이러한 매개 변수에 대한 자세한 내용은 시스템수정하는 Cmdlet 만들기를 참조하세요.

매개 변수 별칭 정의

매개 변수 별칭은 대체 이름 또는 잘 정의된 1자 또는 cmdlet 매개 변수의 짧은 2자 이름일 수 있습니다. 두 경우 모두 별칭을 사용하는 목표는 명령줄에서 사용자 입력을 간소화하는 것입니다. Windows PowerShell은 선언 구문 [Alias()]사용하는 System.Management.Automation.AliasAttribute 특성을 통해 매개 변수 별칭을 지원합니다.

다음 코드에서는 Name 매개 변수에 별칭을 추가하는 방법을 보여 줍니다.

/// <summary>
/// Specify the mandatory Name parameter used to identify the
/// processes to be stopped.
/// </summary>
[Parameter(
           Position = 0,
           Mandatory = true,
           ValueFromPipeline = true,
           ValueFromPipelineByPropertyName = true,
           HelpMessage = "The name of one or more processes to stop. Wildcards are permitted."
)]
[Alias("ProcessName")]
public string[] Name
{
  get { return processNames; }
  set { processNames = value; }
}
private string[] processNames;

Windows PowerShell 런타임은 System.Management.Automation.AliasAttribute 특성을 사용하는 것 외에도 별칭이 지정되지 않은 경우에도 부분 이름 일치를 수행합니다. 예를 들어 cmdlet에 FileName 매개 변수가 있고 F시작하는 유일한 매개 변수인 경우 사용자는 Filename, Filenam, File, Fi또는 F 입력하고 항목을 FileName 매개 변수로 인식할 수 있습니다.

매개 변수에 대한 도움말 만들기

Windows PowerShell을 사용하면 cmdlet 매개 변수에 대한 도움말을 만들 수 있습니다. 시스템 수정 및 사용자 피드백에 사용되는 매개 변수에 대해 이 작업을 수행합니다. 도움말을 지원하는 각 매개 변수에 대해 System.Management.Automation.ParameterAttribute 특성 선언에서 HelpMessage 특성 키워드를 설정할 수 있습니다. 이 키워드는 매개 변수 사용에 도움이 되도록 사용자에게 표시할 텍스트를 정의합니다. HelpMessageBaseName 키워드를 설정하여 메시지에 사용할 리소스의 기본 이름을 식별할 수도 있습니다. 이 키워드를 설정하는 경우 HelpMessageResourceId 키워드를 설정하여 리소스 식별자를 지정해야 합니다.

Stop-Proc cmdlet의 다음 코드는 Name 매개 변수에 대한 HelpMessage 특성 키워드를 정의합니다.

/// <summary>
/// Specify the mandatory Name parameter used to identify the
/// processes to be stopped.
/// </summary>
[Parameter(
           Position = 0,
           Mandatory = true,
           ValueFromPipeline = true,
           ValueFromPipelineByPropertyName = true,
           HelpMessage = "The name of one or more processes to stop. Wildcards are permitted."
)]

입력 처리 방법 재정의

cmdlet은 입력 처리 방법을 재정의해야 합니다. 대부분의 경우 System.Management.Automation.Cmdlet.ProcessRecord . 시스템을 수정할 때 cmdlet은 System.Management.Automation.Cmdlet.ShouldProcessSystem.Management.Automation.Cmdlet.ShouldContinue 메서드를 호출하여 사용자가 변경하기 전에 피드백을 제공할 수 있도록 해야 합니다. 이러한 메서드에 대한 자세한 내용은 시스템수정하는 Cmdlet 만들기를 참조하세요.

와일드카드 확장 지원

여러 개체를 선택할 수 있도록 cmdlet은 System.Management.Automation.WildcardPatternSystem.Management.Automation.WildcardOptions 클래스를 사용하여 매개 변수 입력에 대한 와일드카드 확장 지원을 제공할 수 있습니다. 와일드카드 패턴의 예는 lsa*, *.txt[a-c]*. 패턴에 문자 그대로 사용해야 하는 문자가 포함된 경우 백 따옴표 문자(`)를 이스케이프 문자로 사용합니다.

파일 및 경로 이름의 와일드카드 확장은 여러 개체를 선택해야 할 때 cmdlet이 경로 입력을 지원할 수 있는 일반적인 시나리오의 예입니다. 일반적인 경우는 사용자가 현재 폴더에 있는 모든 파일을 보려는 파일 시스템에 있습니다.

구현과 일치하는 사용자 지정 와일드카드 패턴이 거의 필요하지 않습니다. 이 경우 cmdlet은 와일드카드 확장에 대한 전체 POSIX 1003.2, 3.13 사양 또는 다음과 같은 간소화된 하위 집합을 지원해야 합니다.

  • 물음표(?). 지정된 위치에 있는 문자와 일치합니다.
  • 별표(*). 지정된 위치에서 시작하는 0개 이상의 문자와 일치합니다.
  • 대괄호([)를 엽니다. 문자 또는 문자 범위를 포함할 수 있는 패턴 대괄호 식을 소개합니다. 범위가 필요한 경우 하이픈(-)을 사용하여 범위를 나타냅니다.
  • 닫기 대괄호(]). 패턴 대괄호 식을 종료합니다.
  • 뒷따옴표 이스케이프 문자(`)입니다. 다음 문자를 문자 그대로 가져와야 임을 나타냅니다. 명령줄에서 역따옴표 문자를 지정할 때(프로그래밍 방식으로 지정하지 않고) 백 따옴표 이스케이프 문자를 두 번 지정해야 합니다.

비고

와일드카드 패턴에 대한 자세한 내용은 cmdlet 매개 변수 지원 와일드카드를 참조하세요.

다음 코드에서는 와일드카드 옵션을 설정하고 이 cmdlet에 대한 Name 매개 변수를 확인하는 데 사용되는 와일드카드 패턴을 정의하는 방법을 보여 줍니다.

WildcardOptions options = WildcardOptions.IgnoreCase |
                          WildcardOptions.Compiled;
WildcardPattern wildcard = new WildcardPattern(name,options);

다음 코드는 프로세스 이름이 정의된 와일드카드 패턴과 일치하는지 여부를 테스트하는 방법을 보여 줍니다. 이 경우 프로세스 이름이 패턴과 일치하지 않으면 cmdlet은 계속해서 다음 프로세스 이름을 가져옵니다.

if (!wildcard.IsMatch(processName))
{
  continue;
}

코드 샘플

전체 C# 샘플 코드는 StopProcessSample03 샘플참조하세요.

개체 형식 및 서식 정의

Windows PowerShell은 .NET 개체를 사용하여 cmdlet 간에 정보를 전달합니다. 따라서 cmdlet은 자체 형식을 정의해야 하거나 cmdlet이 다른 cmdlet에서 제공하는 기존 형식을 확장해야 할 수 있습니다. 새 형식을 정의하거나 기존 형식을 확장하는 방법에 대한 자세한 내용은 개체 형식 확장 및 서식참조하세요.

Cmdlet 빌드

cmdlet을 구현한 후에는 Windows PowerShell 스냅인을 통해 Windows PowerShell에 등록해야 합니다. cmdlet 등록에 대한 자세한 내용은 Cmdlet, 공급자 및 호스트 애플리케이션등록하는 방법을 참조하세요.

Cmdlet 테스트

cmdlet이 Windows PowerShell에 등록되면 명령줄에서 실행하여 테스트할 수 있습니다. 샘플 Stop-Proc cmdlet을 테스트해 보겠습니다. 명령줄에서 cmdlet을 사용하는 방법에 대한 자세한 내용은 Windows PowerShell 시작하는참조하세요.

  • Windows PowerShell을 시작하고 Stop-Proc 사용하여 Name 매개 변수에 대한 ProcessName 별칭을 사용하여 프로세스를 중지합니다.

    PS> Stop-Proc -ProcessName notepad
    

    다음 출력이 나타납니다.

    Confirm
    Are you sure you want to perform this action?
    Performing operation "Stop-Proc" on Target "notepad (3496)".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
    
  • 명령줄에서 다음 항목을 만듭니다. Name 매개 변수는 필수이므로 해당 매개 변수에 대한 메시지가 표시됩니다. !? 입력하면 매개 변수와 연결된 도움말 텍스트가 표시됩니다.

    PS> Stop-Proc
    

    다음 출력이 나타납니다.

    Cmdlet Stop-Proc at command pipeline position 1
    Supply values for the following parameters:
    (Type !? for Help.)
    Name[0]: !?
    The name of one or more processes to stop. Wildcards are permitted.
    Name[0]: notepad
    
  • 이제 다음 항목을 만들어 와일드카드 패턴 *note*일치하는 모든 프로세스를 중지합니다. 패턴과 일치하는 각 프로세스를 중지하기 전에 메시지가 표시됩니다.

    PS> Stop-Proc -Name *note*
    

    다음 출력이 나타납니다.

    Confirm
    Are you sure you want to perform this action?
    Performing operation "Stop-Proc" on Target "notepad (1112)".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
    

    다음 출력이 나타납니다.

    Confirm
    Are you sure you want to perform this action?
    Performing operation "Stop-Proc" on Target "ONENOTEM (3712)".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): N
    

    다음 출력이 나타납니다.

    Confirm
    Are you sure you want to perform this action?
    Performing operation "Stop-Proc" on Target "ONENOTE (3592)".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): N
    

또한 참조하십시오