다음을 통해 공유


about_Parameters_Default_Values

간단한 설명

cmdlet 매개 변수 및 고급 함수에 대한 사용자 지정 기본값을 설정하는 방법을 설명합니다.

자세한 설명

$PSDefaultParameterValues 기본 설정 변수를 사용하면 cmdlet 또는 고급 함수에 대한 사용자 지정 기본값을 지정할 수 있습니다. 명령에서 다른 값을 지정하지 않는 한 Cmdlet 및 고급 함수는 사용자 지정 기본값을 사용합니다.

cmdlet 및 고급 함수 작성자는 해당 매개 변수에 대한 표준 기본값을 설정합니다. 일반적으로 표준 기본값은 유용하지만 모든 환경에는 적합하지 않을 수 있습니다.

이 기능은 명령을 사용할 때마다 거의 매번 동일한 대체 매개 변수 값을 지정해야 하거나 이메일 서버 이름 또는 프로젝트 GUID와 같은 특정 매개 변수 값을 기억하기 어려운 경우에 특히 유용합니다.

원하는 기본값이 예측 가능한 경우 다른 조건에서 매개 변수에 대해 다른 기본값을 제공하는 스크립트 블록을 지정할 수 있습니다.

$PSDefaultParameterValues 는 PowerShell 3.0에서 도입되었습니다.

구문

변수는 $PSDefaultParameterValues System.Management.Automation.DefaultParameterDictionary의 개체 형식으로 키 형식의 유효성을 검사하는 해시 테이블입니다. 해시 테이블에는 키/값 쌍이 포함됩니다. 는 형식CmdletName:ParameterName입니다. 은 키에 할당된 DefaultValue 또는 ScriptBlock입니다.

기본 설정 변수의 구문 $PSDefaultParameterValues 은 다음과 같습니다.

$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}

$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }

$PSDefaultParameterValues["Disabled"]=$True | $False

Wild카드 문자는 CmdletName 및 ParameterName 값에 허용됩니다.

특정 키/값$PSDefaultParameterValues을 설정, 변경, 추가 또는 제거하려면 메서드를 사용하여 표준 해시 테이블을 편집합니다. 예를 들어 Add and Remove 메서드가 있습니다. 이러한 메서드는 해시 테이블의 다른 값을 덮어쓰지 않습니다.

기존 $PSDefaultParameterValues 해시 테이블을 덮어쓰지 않는 또 다른 구문이 있습니다. 특정 키/값 쌍을 추가하거나 변경하려면 다음 구문을 사용합니다.

$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"

CmdletName은 cmdlet의 이름 또는 CmdletBinding 특성을 사용하는 고급 함수의 이름이어야 합니다. 스크립트 또는 단순 함수의 기본값을 지정하는 데는 사용할 $PSDefaultParameterValues 수 없습니다.

DefaultValue개체 또는 스크립트 블록일 수 있습니다. 값이 스크립트 블록인 경우 PowerShell은 스크립트 블록을 평가하고 결과를 매개 변수 값으로 사용합니다. 지정된 매개 변수가 스크립트 블록 값을 수락하는 경우 다음과 같은 두 번째 중괄호 집합에 스크립트 블록 값을 묶습니다.

$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }

자세한 내용은 다음 문서를 참조하십시오.

예제

$PSDefaultParameterValues 설정하는 방법

$PSDefaultParameterValues 는 기본 설정 변수이므로 설정된 세션에만 존재합니다. 기본값이 없습니다.

설정 $PSDefaultParameterValues하려면 변수 이름과 하나 이상의 키/값 쌍을 입력합니다. 다른 $PSDefaultParameterValues 명령을 실행하면 기존 해시 테이블을 덮어씁니다.

기존 해시 테이블 값을 덮어쓰지 않고 키/값 쌍을 변경하는 방법에 대한 예제는 $PSDefaultParameterValues 값을 추가하는 방법 또는 $PSDefaultParameterValues 값을 변경하는 방법을 참조하세요.

이후 세션을 위해 저장 $PSDefaultParameterValues 하려면 PowerShell 프로필에 명령을 추가 $PSDefaultParameterValues 합니다. 자세한 내용은 about_Profiles를 참조하세요.

사용자 지정 기본값 설정

키/값 쌍은 키를 Server123사용자 지정 기본값으로 설정합니다Send-MailMessage:SmtpServer.

$PSDefaultParameterValues = @{
  "Send-MailMessage:SmtpServer"="Server123"
}

여러 매개 변수에 대한 기본값 설정

여러 매개 변수에 대한 기본값을 설정하려면 각 키/값 쌍을 세미콜론(;)으로 구분합니다. 키와 Get-WinEvent:LogName 키는 Send-MailMessage:SmtpServer 사용자 지정 기본값으로 설정됩니다.

$PSDefaultParameterValues = @{
  "Send-MailMessage:SmtpServer"="Server123";
  "Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}

wild카드 및 switch 매개 변수 사용

cmdlet 및 매개 변수 이름에는 야생카드 문자가 포함될 수 있습니다. 자세한 정보 표시와 $False 같은 스위치 매개 변수에 대한 값을 사용하고 $True 설정합니다. 공통 매개 변수의 자세한 정보 표시 매개 변수는 모든 명령에 대해 설정 $True 됩니다.

$PSDefaultParameterValues = @{"*:Verbose"=$True}

기본값에 배열 사용

매개 변수가 여러 값, 배열을 허용할 수 있는 경우 여러 값을 기본값으로 설정할 수 있습니다. 키의 Invoke-Command:ComputerName 기본값은 Server01Server02배열 값으로 설정됩니다.

$PSDefaultParameterValues = @{
  "Invoke-Command:ComputerName"="Server01","Server02"
}

스크립트 블록 사용

스크립트 블록을 사용하여 다른 조건에서 매개 변수에 대해 다른 기본값을 지정할 수 있습니다. PowerShell은 스크립트 블록을 평가하고 결과를 기본 매개 변수 값으로 사용합니다.

Format-Table:AutoSize 매개 변수를 기본값인 True로 전환하는 키 집합입니다. 이 문에는 If PowerShell 콘솔인 ConsoleHost여야 하는 $host.Name 조건이 포함되어 있습니다.

$PSDefaultParameterValues=@{
  "Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}

매개 변수가 스크립트 블록 값을 수락하는 경우 스크립트 블록을 추가 중괄호 집합으로 묶습니다. PowerShell이 외부 스크립트 블록을 평가할 때 결과는 내부 스크립트 블록이며 기본 매개 변수 값으로 설정됩니다.

스크립트 블록이 Invoke-Command:ScriptBlock 두 번째 중괄호 집합으로 묶이기 때문에 시스템 이벤트 로그의 기본값으로 설정된 키입니다. 스크립트 블록의 결과가 cmdlet에 Invoke-Command 전달됩니다.

$PSDefaultParameterValues=@{
  "Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}

$PSDefaultParameterValues 가져오는 방법

해시 테이블 값은 PowerShell 프롬프트에 입력 $PSDefaultParameterValues 하여 표시됩니다.

$PSDefaultParameterValues 해시 테이블은 세 개의 키/값 쌍으로 설정됩니다. 이 해시 테이블은 다음 예제에서 값을 $PSDefaultParameterValues추가, 변경 및 제거하는 방법을 설명하는 데 사용됩니다.

PS> $PSDefaultParameterValues = @{
  "Send-MailMessage:SmtpServer"="Server123"
  "Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
  "Get-*:Verbose"=$True
}

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    Server123

특정 CmdletName:ParameterName 키의 값을 얻으려면 다음 구문을 사용합니다.

$PSDefaultParameterValues["CmdletName:ParameterName"]

예를 들어 키 값을 Send-MailMessage:SmtpServer 가져옵니다.

PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123

$PSDefaultParameterValues 값을 추가하는 방법

값을 $PSDefaultParameterValues추가하려면 Add 메서드를 사용합니다. 값을 추가해도 해시 테이블의 기존 값에는 영향을 주지 않습니다.

쉼표(,)를 사용하여 키를과 구분합니다. 다음 구문에서는 Add 메서드$PSDefaultParameterValues를 사용하는 방법을 보여줍니다.

PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")

이전 예제에서 만든 해시 테이블은 새 키/값 쌍으로 업데이트됩니다. Add 메서드는 키를 PowerShell으로 설정합니다Get-Process:Name.

$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")

다음 구문은 동일한 결과를 수행합니다.

$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"

변수는 $PSDefaultParameterValues 업데이트된 해시 테이블을 표시합니다. Get-Process:Name 키가 추가되었습니다.

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-Process:Name               PowerShell
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    Server123

$PSDefaultParameterValues 값을 제거하는 방법

값을 $PSDefaultParameterValues제거하려면 해시 테이블의 Remove 메서드를 사용합니다. 값을 제거해도 해시 테이블의 기존 값에는 영향을 주지 않습니다.

다음 구문에서는 Remove 메서드$PSDefaultParameterValues사용하는 방법을 보여줍니다.

PS> $PSDefaultParameterValues.Remove("CmdletName:ParameterName")

이 예제에서는 이전 예제에서 만든 해시 테이블이 키/값 쌍을 제거하도록 업데이트됩니다. Remove 메서드는 키를 제거합니다Get-Process:Name.

$PSDefaultParameterValues.Remove("Get-Process:Name")

변수는 $PSDefaultParameterValues 업데이트된 해시 테이블을 표시합니다. Get-Process:Name 키가 제거되었습니다.

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    Server123

$PSDefaultParameterValues 값을 변경하는 방법

특정 값을 변경해도 기존 해시 테이블 값에는 영향을 주지 않습니다. 특정 키/값 쌍을 $PSDefaultParameterValues변경하려면 다음 구문을 사용합니다.

PS> $PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"

이 예제에서는 이전 예제에서 만든 해시 테이블이 키/값 쌍을 변경하도록 업데이트됩니다. 다음 명령은 키를 ServerXYZ의 새 값으로 변경 Send-MailMessage:SmtpServer 합니다.

$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"

변수는 $PSDefaultParameterValues 업데이트된 해시 테이블을 표시합니다. Send-MailMessage:SmtpServer 키가 새 값으로 변경되었습니다.

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    ServerXYZ

$PSDefaultParameterValues 사용하지 않도록 설정하고 다시 사용하도록 설정하는 방법

일시적으로 사용하지 않도록 설정한 다음 다시 사용하도록 설정할 $PSDefaultParameterValues수 있습니다. 비활성화 $PSDefaultParameterValues 는 다른 기본 매개 변수 값이 필요한 스크립트를 실행하는 경우에 유용합니다.

사용하지 않도록 설정$PSDefaultParameterValues하려면 True 값을 가진 키를 Disabled 추가합니다. 값 $PSDefaultParameterValues 은 유지되지만 유효하지는 않습니다.

PS> $PSDefaultParameterValues.Add("Disabled", $True)

다음 구문은 동일한 결과를 수행합니다.

PS> $PSDefaultParameterValues["Disabled"]=$True

변수는 $PSDefaultParameterValues 키 값을 사용하여 업데이트된 해시 테이블을 표시합니다 Disabled .

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Disabled                       True
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    ServerXYZ

다시 사용하도록 설정$PSDefaultParameterValues하려면 Disabled 키를 제거하거나 Disabled 키의 값을 .로 변경합니다$False. 이전 값 $PSDefaultParameterValues 은 다시 적용됩니다.

PS> $PSDefaultParameterValues.Remove("Disabled")

다음 구문은 동일한 결과를 수행합니다.

PS> $PSDefaultParameterValues["Disabled"]=$False

변수는 $PSDefaultParameterValues 업데이트된 해시 테이블을 표시합니다. Remove 메서드를 사용하면 Disabled 키가 출력에서 제거됩니다. 대체 구문을 사용하여 다시 사용하도록 설정 $PSDefaultParameterValuesDisabled 하면 키가 False표시됩니다.

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Disabled                       False
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    ServerXYZ

참고 항목