다음을 통해 공유


Cmdlet 매개 변수 집합

PowerShell은 매개 변수 집합을 사용하여 다양한 시나리오에 대해 다른 작업을 수행할 수 있는 단일 cmdlet을 작성할 수 있도록 합니다. 매개 변수 집합을 사용하면 사용자에게 다른 매개 변수를 노출할 수 있습니다. 또한 사용자가 지정한 매개 변수에 따라 다른 정보를 반환합니다.

매개 변수 집합의 예

예를 들어 PowerShell Get-EventLog cmdlet은 사용자가 List 또는 LogName 매개 변수를 지정하는지에 따라 다른 정보를 반환합니다. List 매개 변수를 지정하면 cmdlet은 로그 파일 자체에 대한 정보를 반환하지만 포함된 이벤트 정보는 반환하지 않습니다. LogName 매개 변수를 지정하면 cmdlet은 특정 이벤트 로그의 이벤트에 대한 정보를 반환합니다. ListLogName 매개 변수는 두 개의 개별 매개 변수 집합을 식별합니다.

고유 매개 변수

각 매개 변수 집합에는 PowerShell 런타임이 적절한 매개 변수 집합을 노출하는 데 사용하는 고유한 매개 변수가 있어야 합니다. 가능하면 고유 매개 변수는 필수 매개 변수여야 합니다. 매개 변수가 필수인 경우 사용자는 매개 변수를 지정해야 하며 PowerShell 런타임은 해당 매개 변수를 사용하여 매개 변수 집합을 식별합니다. cmdlet이 매개 변수를 지정하지 않고 실행되도록 설계된 경우 고유 매개 변수는 필수가 될 수 없습니다.

여러 매개 변수 집합

다음 그림에서 왼쪽 열에는 세 개의 유효한 매개 변수 집합이 표시됩니다. 매개 변수 A는 첫 번째 매개 변수 집합에 고유하고, 매개 변수 B는 두 번째 매개 변수 집합에 고유하고, 매개 변수 C는 세 번째 매개 변수 집합에 고유합니다. 오른쪽 열에서 매개 변수 집합에는 고유한 매개 변수가 없습니다.

매개 변수 집합의 그림

매개 변수 집합 요구 사항

다음 요구 사항은 모든 매개 변수 집합에 적용됩니다.

  • 각 매개 변수 집합에는 하나 이상의 고유 매개 변수가 있어야 합니다. 가능하면 이 매개 변수를 필수 매개 변수로 만듭니다.

  • 여러 위치 매개 변수를 포함하는 매개 변수 집합은 각 매개 변수에 대해 고유한 위치를 정의해야 합니다. 두 위치 매개 변수는 동일한 위치를 지정할 수 없습니다.

  • 집합의 매개 변수 하나만 값이 인 ValueFromPipeline 키워드를 선언할 수 true 있습니다. 여러 매개 변수는 ValueFromPipelineByPropertyName 값으로 키워드를 정의할 수 true 있습니다.

  • 매개 변수에 매개 변수 집합이 지정되지 않은 경우 매개 변수는 모든 매개 변수 집합에 속합니다.

참고

cmdlet 또는 함수의 경우 매개 변수 집합이 32개로 제한됩니다.

기본 매개 변수 집합

여러 매개 변수 집합이 정의되면 DefaultParameterSetName Cmdlet 특성의 키워드를 사용하여 기본 매개 변수 집합을 지정할 수 있습니다. PowerShell은 명령에서 제공하는 정보에 따라 사용할 매개 변수 집합을 확인할 수 없는 경우 기본 매개 변수 집합을 사용합니다. Cmdlet 특성에 대한 자세한 내용은 Cmdlet 특성 선언을참조하세요.

매개 변수 집합 선언

매개 변수 집합을 만들려면 매개 변수 집합의 ParameterSetName 모든 매개 변수에 대해 Parameter 특성을 선언할 때 키워드를 지정해야 합니다. 여러 매개 변수 집합에 속하는 매개 변수의 경우 각 매개 변수 집합에 대한 매개 변수 특성을 추가합니다. 이 특성을 사용하면 각 매개 변수 집합에 대해 매개 변수를 다르게 정의할 수 있습니다. 예를 들어 한 집합에서 매개 변수를 필수로 정의하고 다른 집합에서는 선택 사항으로 정의할 수 있습니다. 그러나 각 매개 변수 집합에는 하나의 고유한 매개 변수가 포함되어야 합니다. 자세한 내용은 매개 변수 특성 선언을참조하세요.

다음 예제에서 UserName 매개 변수는 매개 변수 집합의 고유 매개 Test01 변수이고 ComputerName 매개 변수는 매개 변수 집합의 고유 Test02 매개 변수입니다. SharedParam 매개 변수는 두 집합 모두에 속하며 Test01 매개 변수 집합에는 필수이지만 매개 변수 집합의 경우 선택 Test02 사항입니다.

[Parameter(Position = 0, Mandatory = true, ParameterSetName = "Test01")]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

[Parameter(Position = 0, Mandatory = true, ParameterSetName = "Test02")]
public string ComputerName
{
  get { return computerName; }
  set { computerName = value; }
}
private string computerName;

[Parameter(Mandatory= true, ParameterSetName = "Test01")]
[Parameter(ParameterSetName = "Test02")]
public string SharedParam
{
    get { return sharedParam; }
    set { sharedParam = value; }
}
private string sharedParam;