about_Parameters_Default_Values

Kısa açıklama

Cmdlet parametreleri ve gelişmiş işlevler için özel varsayılan değerlerin nasıl ayarlanacağı açıklanır.

Uzun açıklama

Tercih $PSDefaultParameterValues değişkeni, herhangi bir cmdlet veya gelişmiş işlev için özel varsayılan değerler belirtmenize olanak tanır. Cmdlet'ler ve gelişmiş işlevler, komutta başka bir değer belirtmediğiniz sürece özel varsayılan değeri kullanır.

Cmdlet'lerin ve gelişmiş işlevlerin yazarları parametreleri için standart varsayılan değerler ayarlar. Genellikle standart varsayılan değerler kullanışlıdır, ancak tüm ortamlar için uygun olmayabilir.

Bu özellik özellikle, komutu her kullandığınızda aynı alternatif parametre değerini belirtmeniz gerektiğinde veya e-posta sunucusu adı veya proje GUID'i gibi belirli bir parametre değerinin anımsanması zor olduğunda kullanışlıdır.

İstenen varsayılan değer tahmin edilebilir şekilde değişiyorsa, farklı koşullar altında parametre için farklı varsayılan değerler sağlayan bir betik bloğu belirtebilirsiniz.

$PSDefaultParameterValues PowerShell 3.0'da kullanıma sunulmuştur.

Sözdizimi

$PSDefaultParameterValues değişkeni, anahtarların biçimini System.Management.Automation.DefaultParameterDictionary nesne türü olarak doğrulayan bir karma tablodur. Karma tablo Anahtar/Değer çiftlerini içerir. Anahtar biçimindedirCmdletName:ParameterName. Değer, anahtara atanan DefaultValue veya ScriptBlock değeridir.

Tercih değişkeninin $PSDefaultParameterValues söz dizimi aşağıdaki gibidir:

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

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

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

CmdletName ve ParameterName değerlerinde joker karakterlere izin verilir.

belirli bir Anahtar/Değer çiftini $PSDefaultParameterValuesayarlamak, değiştirmek, eklemek veya kaldırmak için, standart karma tablosunu düzenlemek için yöntemlerini kullanın. Örneğin, Ekle ve Kaldır yöntemleri. Bu yöntemler karma tablodaki diğer değerlerin üzerine yazılamaz.

Varolan $PSDefaultParameterValues bir karma tablonun üzerine yazmayan başka bir söz dizimi vardır. Belirli bir Anahtar/Değer çiftini eklemek veya değiştirmek için aşağıdaki söz dizimini kullanın:

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

CmdletName, cmdlet'in adı veya CmdletBinding özniteliğini kullanan gelişmiş bir işlevin adı olmalıdır. Betikler veya basit işlevler için varsayılan değerleri belirtmek için kullanamazsınız $PSDefaultParameterValues .

DefaultValue bir nesne veya betik bloğu olabilir. Değer bir betik bloğuysa, PowerShell betik bloğunu değerlendirir ve parametre değeri olarak sonucu kullanır. Belirtilen parametre bir betik bloğu değeri kabul ettiğinde, betik bloğu değerini aşağıdaki gibi ikinci bir küme ayracı içine alın:

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

Daha fazla bilgi için, aşağıdaki belgelere bakın:

Örnekler

$PSDefaultParameterValues ayarlama

$PSDefaultParameterValues bir tercih değişkeni olduğundan, yalnızca ayarlandığı oturumda bulunur. Varsayılan değeri yoktur.

ayarlamak $PSDefaultParameterValuesiçin değişken adını ve bir veya daha fazla Anahtar/Değer çifti yazın. Başka bir $PSDefaultParameterValues komut çalıştırırsanız, varolan karma tablonun üzerine yazılır.

Mevcut karma tablo değerlerinin üzerine yazmadan Anahtar/Değer çiftlerini değiştirme hakkında örnekler için bkz. $PSDefaultParameterValues değer ekleme veya $PSDefaultParameterValues değerleri değiştirme.

Gelecekteki oturumlara kaydetmek $PSDefaultParameterValues için PowerShell profilinize bir $PSDefaultParameterValues komut ekleyin. Daha fazla bilgi için bkz . about_Profiles.

Özel bir varsayılan değer ayarlama

Anahtar/Değer çifti, anahtarı Server123'ün özel varsayılan değerine ayarlarSend-MailMessage:SmtpServer.

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

Birden çok parametre için varsayılan değerleri ayarlama

Birden çok parametre için varsayılan değerleri ayarlamak için, her Anahtar/Değer çiftini noktalı virgülle (; ) ayırın. Send-MailMessage:SmtpServer ve Get-WinEvent:LogName anahtarları özel varsayılan değerlere ayarlanır.

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

Joker karakterler ve anahtar parametreleri kullanma

Cmdlet ve parametre adları joker karakter içerebilir. Anahtar parametreleri için Verbose gibi değerleri ayarlamak için ve $False kullanın$True. Ortak parametrenin Ayrıntılı parametresi tüm komutlar için olarak $True ayarlanır.

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

Varsayılan değer için dizi kullanma

Bir parametre birden çok değer kabul edebilirse, bir dizi, birden çok değeri varsayılan değerler olarak ayarlayabilirsiniz. Anahtarın Invoke-Command:ComputerName varsayılan değeri Server01 ve Server02 dizi değerine ayarlanır.

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

Betik bloğu kullanma

Bir parametre için farklı koşullar altında farklı varsayılan değerler belirtmek üzere bir betik bloğu kullanabilirsiniz. PowerShell betik bloğunu değerlendirir ve sonucu varsayılan parametre değeri olarak kullanır.

Anahtar, Format-Table:AutoSize parametreyi varsayılan True değerine geçirerek ayarlar. deyimi, If KonsolHost adlı PowerShell konsolu olması gereken bir koşul $host.Name içerir.

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

Bir parametre bir betik bloğu değeri kabul ederse, betik bloğunu ek bir küme ayracı kümesi içine alın. PowerShell dış betik bloğunu değerlendirdiğinde, sonuç iç betik bloğudur ve varsayılan parametre değeri olarak ayarlanır.

Invoke-Command:ScriptBlock Betik bloğu ikinci bir küme ayracı kümesi içine alındığından anahtar, Sistem olay günlüğünün varsayılan değerine ayarlanır. Betik bloğunun sonucu cmdlet'ine Invoke-Command geçirilir.

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

$PSDefaultParameterValues alma

Karma tablo değerleri PowerShell istemine girilerek $PSDefaultParameterValues görüntülenir.

Karma $PSDefaultParameterValues tablo üç Anahtar/Değer çifti ile ayarlanır. Bu karma tablo, aşağıdaki örneklerde değerlerin nasıl ekleneceğini, değiştirildiğini ve kaldırılacağını $PSDefaultParameterValuesaçıklayan örneklerde kullanılır.

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

Belirli CmdletName:ParameterName bir anahtarın değerini almak için aşağıdaki söz dizimini kullanın:

$PSDefaultParameterValues["CmdletName:ParameterName"]

Örneğin, anahtarın değerini almak için Send-MailMessage:SmtpServer .

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

$PSDefaultParameterValues değer ekleme

öğesine değer eklemek için $PSDefaultParameterValuesAdd yöntemini kullanın. Değer eklemek karma tablosunun mevcut değerlerini etkilemez.

Anahtarı Değerden ayırmak için virgül (,) kullanın. Aşağıdaki söz diziminde için $PSDefaultParameterValuesAdd yönteminin nasıl kullanılacağı gösterilmektedir.

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

Önceki örnekte oluşturulan karma tablo yeni bir Anahtar/Değer çifti ile güncelleştirilir. Add yöntemi anahtarı PowerShell değerine ayarlarGet-Process:Name.

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

Aşağıdaki söz dizimi aynı sonucu elde eder.

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

$PSDefaultParameterValues değişkeni güncelleştirilmiş karma tablosunu görüntüler. Anahtar Get-Process:Name eklendi.

PS> $PSDefaultParameterValues

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

$PSDefaultParameterValues değerleri kaldırma

değerinden $PSDefaultParameterValuesbir değeri kaldırmak için Karma tabloların Remove yöntemini kullanın. Bir değerin kaldırılması karma tablosunun mevcut değerlerini etkilemez.

Aşağıdaki söz dizimi üzerinde $PSDefaultParameterValuesRemove yönteminin nasıl kullanılacağını gösterir.

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

Bu örnekte, önceki örnekte oluşturulan karma tablo bir Anahtar/Değer çiftini kaldıracak şekilde güncelleştirilir. Remove yöntemi anahtarı kaldırırGet-Process:Name.

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

$PSDefaultParameterValues değişkeni güncelleştirilmiş karma tablosunu görüntüler. Anahtar Get-Process:Name kaldırıldı.

PS> $PSDefaultParameterValues

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

$PSDefaultParameterValues değerleri değiştirme

Belirli bir değerdeki değişiklikler mevcut karma tablo değerlerini etkilemez. içindeki $PSDefaultParameterValuesbelirli bir Anahtar/Değer çiftini değiştirmek için aşağıdaki söz dizimini kullanın:

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

Bu örnekte, önceki örnekte oluşturulan karma tablo Bir Anahtar/Değer çiftini değiştirecek şekilde güncelleştirilir. Aşağıdaki komut, anahtarı ServerXYZ'nin yeni bir değeriyle değiştirirSend-MailMessage:SmtpServer.

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

$PSDefaultParameterValues değişkeni güncelleştirilmiş karma tablosunu görüntüler. Anahtar Send-MailMessage:SmtpServer yeni bir değere değiştirildi.

PS> $PSDefaultParameterValues

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

$PSDefaultParameterValues devre dışı bırakma ve yeniden etkinleştirme

öğesini geçici olarak devre dışı bırakabilir ve sonra yeniden etkinleştirebilirsiniz $PSDefaultParameterValues. $PSDefaultParameterValues Farklı varsayılan parametre değerlerine ihtiyaç duyan betikler çalıştırıyorsanız devre dışı bırakmak yararlı olur.

öğesini devre dışı bırakmak $PSDefaultParameterValuesiçin değerini True değerine sahip olarak ekleyinDisabled. içindeki $PSDefaultParameterValues değerler korunur, ancak etkili değildir.

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

Aşağıdaki söz dizimi aynı sonucu elde eder.

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

$PSDefaultParameterValues değişkeni, anahtarın değeriyle Disabled güncelleştirilmiş karma tablosunu görüntüler.

PS> $PSDefaultParameterValues

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

öğesini yeniden etkinleştirmek $PSDefaultParameterValuesiçin Devre Dışı anahtarını kaldırın veya Devre Dışı anahtarının değerini olarak $Falsedeğiştirin. önceki değeri $PSDefaultParameterValues yeniden etkindir.

PS> $PSDefaultParameterValues.Remove("Disabled")

Aşağıdaki söz dizimi aynı sonucu elde eder.

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

$PSDefaultParameterValues değişkeni güncelleştirilmiş karma tablosunu görüntüler. Remove yöntemi kullanıldığında anahtar Disabled çıkıştan kaldırılır. öğesini yeniden etkinleştirmek $PSDefaultParameterValuesDisabled için alternatif söz dizimi kullanıldıysa, anahtar False olarak görüntülenir.

PS> $PSDefaultParameterValues

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

Ayrıca bkz.