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 $PSDefaultParameterValueshaszná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 $PSDefaultParameterValueshaszná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 $PSDefaultParameterValueskivonattá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 $PSDefaultParameterValuesmó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 $PSDefaultParameterValuesadjon 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 $PSDefaultParameterValuestá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

Lásd még