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 $PSDefaultParameterValueskembali . $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 $PSDefaultParameterValueskembali , 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 $PSDefaultParameterValueskembali , 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

Baca juga