about_Parameters_Default_Values
Rövid leírás
Ismerteti, hogyan állíthat be egyéni alapértelmezett értékeket a parancsmagparaméterekhez és a speciális függvényekhez.
Hosszú leírás
A $PSDefaultParameterValues
beállítási változóval egyéni alapértelmezett értékeket adhat meg bármely parancsmaghoz vagy speciális függvényhez. A parancsmagok és a speciális függvények az egyéni alapértelmezett értéket használják, hacsak nem ad meg egy másik értéket a parancsban.
A parancsmagok és a speciális függvények szerzői szabványos alapértelmezett értékeket állítanak be a paramétereikhez. A standard alapértelmezett értékek általában hasznosak, de előfordulhat, hogy nem minden környezethez megfelelőek.
Ez a funkció különösen akkor hasznos, ha ugyanazt az alternatív paraméterértéket szinte minden alkalommal meg kell adnia, amikor a parancsot használja, vagy ha egy adott paraméterérték nehezen megjegyezható, például egy e-mail-kiszolgáló nevét vagy a projekt GUID azonosítóját.
Ha a kívánt alapértelmezett érték kiszámíthatóan változik, megadhat egy szkriptblokkot, amely különböző feltételek mellett különböző alapértelmezett értékeket biztosít egy paraméterhez.
$PSDefaultParameterValues
a PowerShell 3.0-ban jelent meg.
Syntax
A $PSDefaultParameterValues
változó egy kivonattáblázat, amely ellenőrzi a kulcsok formátumát a System.Management.Automation.DefaultParameterDictionary objektumtípusaként. A kivonattábla kulcs-/érték párokat tartalmaz. A kulcs formátuma CmdletName:ParameterName
. Az érték a kulcshoz rendelt DefaultValue vagy ScriptBlock .
A beállítási változó szintaxisa $PSDefaultParameterValues
a következő:
$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}
$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }
$PSDefaultParameterValues["Disabled"]=$True | $False
A CmdletName és a ParameterName értékekben helyettesítő karakterek használhatók.
Egy adott kulcs/érték pár beállításához, módosításához, hozzáadásához vagy eltávolításához $PSDefaultParameterValues
használja a metódusokat egy szabványos kivonatolótábla szerkesztéséhez. Például a Hozzáadás és eltávolítás metódusok. Ezek a metódusok nem írnak felül más értékeket a kivonattáblában.
Van egy másik szintaxis, amely nem írja felül a meglévő $PSDefaultParameterValues
kivonattáblát. Egy adott kulcs/érték pár hozzáadásához vagy módosításához használja az alábbi szintaxist:
$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
A Parancsmagnévnek egy parancsmag vagy a CmdletBinding attribútumot használó speciális függvény nevének kell lennie. Nem adhat $PSDefaultParameterValues
meg alapértelmezett értékeket szkriptekhez vagy egyszerű függvényekhez.
A DefaultValue objektum vagy szkriptblokk lehet. Ha az érték egy szkriptblokk, a PowerShell kiértékeli a szkriptblokkot, és az eredményt paraméterértékként használja. Ha a megadott paraméter elfogadja a szkriptblokk értékét, a szkriptblokk értékét egy második kapcsos zárójelkészletbe kell befoglalni, például:
$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
További információkért tekintse meg a következő dokumentumokat:
Példák
$PSDefaultParameterValues beállítása
$PSDefaultParameterValues
egy beállítási változó, ezért csak abban a munkamenetben létezik, amelyben be van állítva. Nincs alapértelmezett értéke.
A beállításhoz $PSDefaultParameterValues
írja be a változó nevét és egy vagy több kulcs/érték pár nevét. Ha egy másik $PSDefaultParameterValues
parancsot futtat, felülírja a meglévő kivonattáblát.
A kulcs-/érték párok meglévő kivonattábla-értékek felülírása nélkül történő módosítására vonatkozó példákért lásd: Hogyan adhat hozzá értékeket $PSDefaultParameterValues, vagy hogyan módosíthatja az értékeket $PSDefaultParameterValues.
A későbbi munkamenetek mentéséhez $PSDefaultParameterValues
adjon hozzá egy $PSDefaultParameterValues
parancsot a PowerShell-profiljához. További információ: about_Profiles.
Egyéni alapértelmezett érték beállítása
A Kulcs/Érték pár a Send-MailMessage:SmtpServer
Kiszolgáló123 egyéni alapértelmezett értékére állítja be a kulcsot.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
}
Több paraméter alapértelmezett értékeinek beállítása
Ha több paraméter alapértelmezett értékeit szeretné beállítani, különítse el az egyes kulcs-/értékpárokat pontosvesszővel (;
). A Send-MailMessage:SmtpServer
kulcsok egyéni Get-WinEvent:LogName
alapértelmezett értékekre vannak beállítva.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}
Helyettesítő karakterek használata és paraméterek váltása
A parancsmag és a paraméternevek helyettesítő karaktereket tartalmazhatnak. A kapcsolóparaméterek, például a Verbose értékeinek használata $True
és $False
beállítása. A gyakori paraméter részletes paramétere az összes parancshoz $True
be van állítva.
$PSDefaultParameterValues = @{"*:Verbose"=$True}
Tömb használata az alapértelmezett értékhez
Ha egy paraméter több értéket, tömböt is elfogad, akkor több értéket is beállíthat alapértelmezett értékként. A kulcs alapértelmezett értéke a Server01 és a Invoke-Command:ComputerName
Server02 tömbértékre van állítva.
$PSDefaultParameterValues = @{
"Invoke-Command:ComputerName"="Server01","Server02"
}
Szkriptblokk használata
Szkriptblokk használatával különböző feltételek mellett adhat meg különböző alapértelmezett értékeket egy paraméterhez. A PowerShell kiértékeli a szkriptblokkot, és az eredményt használja alapértelmezett paraméterértékként.
Azok a Format-Table:AutoSize
kulcskészletek, amelyek a paramétert az alapértelmezett True értékre váltják. Az If
utasítás tartalmaz egy feltételt, amely szerint a $host.Name
PowerShell-konzolnak , a ConsoleHostnak kell lennie.
$PSDefaultParameterValues=@{
"Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}
Ha egy paraméter elfogadja a szkriptblokk értékét, a szkriptblokkot egy további kapcsos zárójelkészletbe kell ágyazni. Amikor a PowerShell kiértékeli a külső szkriptblokkot, az eredmény a belső szkriptblokk, amely alapértelmezett paraméterértékként van beállítva.
A Invoke-Command:ScriptBlock
kulcs a Rendszer eseménynapló alapértelmezett értékére van állítva, mert a szkriptblokk egy második kapcsos zárójelkészletbe van zárva. A szkriptblokk eredménye a parancsmagnak Invoke-Command
lesz átadva.
$PSDefaultParameterValues=@{
"Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}
$PSDefaultParameterValues lekérése
A kivonattábla értékei a PowerShell-parancssorba való beírással $PSDefaultParameterValues
jelennek meg.
A $PSDefaultParameterValues
kivonattábla három kulcs/érték párral van beállítva.
Ez a kivonattábla az alábbi példákban használatos, amelyek azt mutatják be, hogyan adhat hozzá, módosíthat és távolíthat el értékeket a fájlból $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
Egy adott CmdletName:ParameterName
kulcs értékének lekéréséhez használja az alábbi szintaxist:
$PSDefaultParameterValues["CmdletName:ParameterName"]
Például a kulcs értékének lekéréséhez Send-MailMessage:SmtpServer
.
PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123
Értékek hozzáadása $PSDefaultParameterValues
Érték hozzáadásához $PSDefaultParameterValues
használja az Add metódust. Az érték hozzáadása nem befolyásolja a kivonattábla meglévő értékeit.
Vesszővel (,
) elválaszthatja a kulcsot az értéktől. Az alábbi szintaxis bemutatja, hogyan használható a Hozzáadás metódus.$PSDefaultParameterValues
PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")
Az előző példában létrehozott kivonattábla egy új kulcs/érték párral frissül. Az Add metódus a Get-Process:Name
PowerShell értékre állítja a kulcsot.
$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
Az alábbi szintaxis ugyanezt az eredményt éri el.
$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"
A $PSDefaultParameterValues
változó megjeleníti a frissített kivonattáblát. A Get-Process:Name
kulcs hozzá lett adva.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-Process:Name PowerShell
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Értékek eltávolítása $PSDefaultParameterValues
Ha el szeretne távolítani egy értéket a $PSDefaultParameterValues
kivonattáblák eltávolítási módszerével. Az érték eltávolítása nem befolyásolja a kivonattábla meglévő értékeit.
Az alábbi szintaxis bemutatja, hogyan használható az Eltávolítás metódus a következőn $PSDefaultParameterValues
:
PS> $PSDefaultParameterValues.Remove("CmdletName:ParameterName")
Ebben a példában az előző példában létrehozott kivonattábla frissül a kulcs/érték pár eltávolításához. Az Eltávolítás metódus eltávolítja a Get-Process:Name
kulcsot.
$PSDefaultParameterValues.Remove("Get-Process:Name")
A $PSDefaultParameterValues
változó megjeleníti a frissített kivonattáblát. A Get-Process:Name
kulcs el lett távolítva.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Értékek módosítása a $PSDefaultParameterValues
Egy adott érték módosítása nincs hatással a kivonattábla meglévő értékeire. Egy adott kulcs/érték pár $PSDefaultParameterValues
módosításához használja a következő szintaxist:
PS> $PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
Ebben a példában az előző példában létrehozott kivonattábla frissül a kulcs/érték pár módosításához. Az alábbi parancs a Send-MailMessage:SmtpServer
ServerXYZ új értékére módosítja a kulcsot.
$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"
A $PSDefaultParameterValues
változó megjeleníti a frissített kivonattáblát. A Send-MailMessage:SmtpServer
kulcs új értékre módosult.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
A $PSDefaultParameterValues letiltása és újbóli engedélyezése
Ideiglenesen letilthatja, majd újra engedélyezheti $PSDefaultParameterValues
.
A letiltás $PSDefaultParameterValues
akkor hasznos, ha különböző alapértelmezett paraméterértékeket igénylő szkripteket futtat.
A letiltáshoz $PSDefaultParameterValues
adjon hozzá egy igaz értékkel rendelkező kulcsotDisabled
. A benne lévő $PSDefaultParameterValues
értékek megmaradnak, de nem hatékonyak.
PS> $PSDefaultParameterValues.Add("Disabled", $True)
Az alábbi szintaxis ugyanezt az eredményt éri el.
PS> $PSDefaultParameterValues["Disabled"]=$True
A $PSDefaultParameterValues
változó megjeleníti a frissített kivonattáblát a kulcs értékével Disabled
.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled True
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Az újbóli engedélyezéshez $PSDefaultParameterValues
távolítsa el a Letiltott kulcsot, vagy módosítsa a Letiltott kulcs értékét a következőre $False
. Az előző érték $PSDefaultParameterValues
ismét érvényes.
PS> $PSDefaultParameterValues.Remove("Disabled")
Az alábbi szintaxis ugyanezt az eredményt éri el.
PS> $PSDefaultParameterValues["Disabled"]=$False
A $PSDefaultParameterValues
változó megjeleníti a frissített kivonattáblát. Az Eltávolítás metódus használatakor a rendszer eltávolítja a Disabled
kulcsot a kimenetből.
Ha a másodlagos szintaxist használták az újbóli engedélyezéshez$PSDefaultParameterValues
, a Disabled
kulcs hamisként jelenik meg.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled False
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ