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 $PSDefaultParameterValues
ayarlamak, 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 $PSDefaultParameterValues
iç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ı $PSDefaultParameterValues
açı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 $PSDefaultParameterValues
Add 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 $PSDefaultParameterValues
Add 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 $PSDefaultParameterValues
bir 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 $PSDefaultParameterValues
Remove 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 $PSDefaultParameterValues
belirli 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 $PSDefaultParameterValues
iç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 $PSDefaultParameterValues
için Devre Dışı anahtarını kaldırın veya Devre Dışı anahtarının değerini olarak $False
değ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 $PSDefaultParameterValues
Disabled
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.
PowerShell
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin