about_Parameters_Default_Values
Deskripsi singkat
Menjelaskan cara mengatur nilai default kustom untuk parameter cmdlet dan fungsi tingkat lanjut.
Deskripsi panjang
$PSDefaultParameterValues
Variabel preferensi memungkinkan Anda menentukan nilai default kustom untuk cmdlet atau fungsi tingkat lanjut apa pun. Cmdlet dan fungsi tingkat lanjut menggunakan nilai default kustom kecuali Anda menentukan nilai lain dalam perintah.
Penulis cmdlet dan fungsi tingkat lanjut menetapkan nilai default standar untuk parameternya. Biasanya, nilai default standar berguna, tetapi mungkin tidak sesuai untuk semua lingkungan.
Fitur ini sangat berguna ketika Anda harus menentukan nilai parameter alternatif yang sama hampir setiap kali Anda menggunakan perintah atau ketika nilai parameter tertentu sulit diingat, seperti nama server email atau GUID proyek.
Jika nilai default yang diinginkan bervariasi secara dapat diprediksi, Anda dapat menentukan blok skrip yang menyediakan nilai default yang berbeda untuk parameter dalam kondisi yang berbeda.
$PSDefaultParameterValues
diperkenalkan di PowerShell 3.0.
Sintaks
Variabel $PSDefaultParameterValues
adalah tabel hash yang memvalidasi format kunci sebagai jenis objek System.Management.Automation.DefaultParameterDictionary. Tabel hash berisi pasangan Kunci/Nilai . Kunci dalam format CmdletName:ParameterName
. Nilai adalah DefaultValue atau ScriptBlock yang ditetapkan ke kunci.
Sintaks $PSDefaultParameterValues
variabel preferensi adalah sebagai berikut:
$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}
$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }
$PSDefaultParameterValues["Disabled"]=$True | $False
Karakter kartubebas diizinkan dalam nilai CmdletName dan ParameterName .
Untuk mengatur, mengubah, menambahkan, atau menghapus pasangan Kunci/Nilai tertentu dari $PSDefaultParameterValues
, gunakan metode untuk mengedit tabel hash standar. Misalnya, metode Tambahkan dan Hapus . Metode ini tidak menimpa nilai lain dalam tabel hash.
Ada sintaks lain yang tidak menimpa tabel hash yang ada $PSDefaultParameterValues
. Untuk menambahkan atau mengubah pasangan Kunci/Nilai tertentu, gunakan sintaks berikut:
$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
CmdletName harus berupa nama cmdlet atau nama fungsi tingkat lanjut yang menggunakan atribut CmdletBinding. Anda tidak dapat menggunakan $PSDefaultParameterValues
untuk menentukan nilai default untuk skrip atau fungsi sederhana.
DefaultValue dapat berupa objek atau blok skrip. Jika nilainya adalah blok skrip, PowerShell mengevaluasi blok skrip dan menggunakan hasilnya sebagai nilai parameter. Ketika parameter yang ditentukan menerima nilai blok skrip, sertakan nilai blok skrip dalam sekumpulan kurung kurawal kedua, seperti:
$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
Untuk informasi selengkapnya, lihat dokumen berikut:
Contoh
Cara mengatur $PSDefaultParameterValues
$PSDefaultParameterValues
adalah variabel preferensi, sehingga hanya ada dalam sesi tempat variabel diatur. Ini tidak memiliki nilai default.
Untuk mengatur $PSDefaultParameterValues
, ketik nama variabel dan satu atau beberapa pasangan Kunci/Nilai . Jika Anda menjalankan perintah lain $PSDefaultParameterValues
, perintah tersebut akan menimpa tabel hash yang ada.
Untuk contoh tentang cara mengubah pasangan Kunci/Nilai tanpa menimpa nilai tabel hash yang ada, lihat Cara menambahkan nilai ke $PSDefaultParameterValues atau Cara mengubah nilai dalam $PSDefaultParameterValues.
Untuk menyimpan $PSDefaultParameterValues
sesi mendatang, tambahkan $PSDefaultParameterValues
perintah ke profil PowerShell Anda. Untuk informasi selengkapnya, lihat about_Profiles.
Mengatur nilai default kustom
Pasangan Kunci/Nilai mengatur Send-MailMessage:SmtpServer
kunci ke nilai default kustom Server123.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
}
Mengatur nilai default untuk beberapa parameter
Untuk mengatur nilai default untuk beberapa parameter, pisahkan setiap pasangan Kunci/Nilai dengan titik koma (;
). Kunci Send-MailMessage:SmtpServer
dan Get-WinEvent:LogName
diatur ke nilai default kustom.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}
Menggunakan kartubebas dan parameter pengalihan
Nama cmdlet dan parameter dapat berisi karakter kartubebas. Gunakan $True
dan $False
untuk mengatur nilai untuk parameter pengalihan, seperti Verbose. Parameter Verbose parameter umum diatur ke $True
untuk semua perintah.
$PSDefaultParameterValues = @{"*:Verbose"=$True}
Menggunakan array untuk nilai default
Jika parameter dapat menerima beberapa nilai, array, Anda dapat mengatur beberapa nilai sebagai nilai default. Nilai Invoke-Command:ComputerName
default kunci diatur ke nilai array Server01 dan Server02.
$PSDefaultParameterValues = @{
"Invoke-Command:ComputerName"="Server01","Server02"
}
Menggunakan blok skrip
Anda dapat menggunakan blok skrip untuk menentukan nilai default yang berbeda untuk parameter dalam kondisi yang berbeda. PowerShell mengevaluasi blok skrip dan menggunakan hasilnya sebagai nilai parameter default.
Kunci Format-Table:AutoSize
menetapkan yang mengalihkan parameter ke nilai default True. Pernyataan berisi If
kondisi bahwa $host.Name
harus konsol PowerShell, ConsoleHost.
$PSDefaultParameterValues=@{
"Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}
Jika parameter menerima nilai blok skrip, sertakan blok skrip dalam sekumpulan kurung kurawal tambahan. Saat PowerShell mengevaluasi blok skrip luar, hasilnya adalah blok skrip dalam, dan yang ditetapkan sebagai nilai parameter default.
Kunci Invoke-Command:ScriptBlock
diatur ke nilai default log peristiwa Sistem karena blok skrip diapit dalam sekumpulan kurung kurawal kedua. Hasil blok skrip diteruskan ke Invoke-Command
cmdlet.
$PSDefaultParameterValues=@{
"Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}
Cara mendapatkan $PSDefaultParameterValues
Nilai tabel hash ditampilkan dengan memasukkan $PSDefaultParameterValues
di prompt PowerShell.
Tabel $PSDefaultParameterValues
hash diatur dengan tiga pasangan Kunci/Nilai .
Tabel hash ini digunakan dalam contoh berikut yang menjelaskan cara menambahkan, mengubah, dan menghapus nilai dari $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
Untuk mendapatkan nilai kunci tertentu CmdletName:ParameterName
, gunakan sintaks berikut:
$PSDefaultParameterValues["CmdletName:ParameterName"]
Misalnya, untuk mendapatkan nilai untuk Send-MailMessage:SmtpServer
kunci.
PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123
Cara menambahkan nilai ke $PSDefaultParameterValues
Untuk menambahkan nilai ke $PSDefaultParameterValues
, gunakan metode Tambahkan . Menambahkan nilai tidak memengaruhi nilai tabel hash yang sudah ada.
Gunakan koma (,
) untuk memisahkan Kunci dari Nilai. Sintaks berikut menunjukkan cara menggunakan metode Tambahkan untuk $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")
Tabel hash yang dibuat dalam contoh sebelumnya diperbarui dengan pasangan Kunci/Nilai baru. Metode Tambahkan mengatur Get-Process:Name
kunci ke nilai PowerShell.
$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
Sintaks berikut mencapai hasil yang sama.
$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"
Variabel $PSDefaultParameterValues
menampilkan tabel hash yang diperbarui. Kunci Get-Process:Name
ditambahkan.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-Process:Name PowerShell
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Cara menghapus nilai dari $PSDefaultParameterValues
Untuk menghapus nilai dari $PSDefaultParameterValues
, gunakan metode Hapus tabel hash. Menghapus nilai tidak memengaruhi nilai tabel hash yang sudah ada.
Sintaks berikut menunjukkan cara menggunakan metode Hapus pada $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Remove("CmdletName:ParameterName")
Dalam contoh ini, tabel hash yang dibuat dalam contoh sebelumnya diperbarui untuk menghapus pasangan Kunci/Nilai . Metode Hapus menghapus Get-Process:Name
kunci.
$PSDefaultParameterValues.Remove("Get-Process:Name")
Variabel $PSDefaultParameterValues
menampilkan tabel hash yang diperbarui. Kunci Get-Process:Name
telah dihapus.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Cara mengubah nilai dalam $PSDefaultParameterValues
Perubahan pada nilai tertentu tidak memengaruhi nilai tabel hash yang ada. Untuk mengubah pasangan Kunci/Nilai tertentu di $PSDefaultParameterValues
, gunakan sintaks berikut:
PS> $PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
Dalam contoh ini, tabel hash yang dibuat dalam contoh sebelumnya diperbarui untuk mengubah pasangan Kunci/Nilai . Perintah berikut mengubah Send-MailMessage:SmtpServer
kunci menjadi nilai baru ServerXYZ.
$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"
Variabel $PSDefaultParameterValues
menampilkan tabel hash yang diperbarui. Kunci Send-MailMessage:SmtpServer
diubah menjadi nilai baru.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Cara menonaktifkan dan mengaktifkan kembali $PSDefaultParameterValues
Anda dapat menonaktifkan sementara lalu mengaktifkan $PSDefaultParameterValues
kembali .
$PSDefaultParameterValues
Menonaktifkan berguna jika Anda menjalankan skrip yang memerlukan nilai parameter default yang berbeda.
Untuk menonaktifkan $PSDefaultParameterValues
, tambahkan kunci Disabled
dengan nilai True. Nilai di $PSDefaultParameterValues
dipertahankan, tetapi tidak efektif.
PS> $PSDefaultParameterValues.Add("Disabled", $True)
Sintaks berikut mencapai hasil yang sama.
PS> $PSDefaultParameterValues["Disabled"]=$True
Variabel $PSDefaultParameterValues
menampilkan tabel hash yang diperbarui dengan nilai untuk Disabled
kunci.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled True
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Untuk mengaktifkan $PSDefaultParameterValues
kembali , hapus kunci Dinonaktifkan atau ubah nilai kunci Dinonaktifkan menjadi $False
. Nilai $PSDefaultParameterValues
sebelumnya efektif lagi.
PS> $PSDefaultParameterValues.Remove("Disabled")
Sintaks berikut mencapai hasil yang sama.
PS> $PSDefaultParameterValues["Disabled"]=$False
Variabel $PSDefaultParameterValues
menampilkan tabel hash yang diperbarui. Saat metode Hapus digunakan, Disabled
kunci dihapus dari output.
Jika sintaks alternatif digunakan untuk mengaktifkan $PSDefaultParameterValues
kembali , kunci Disabled
ditampilkan sebagai False.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled False
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk