Sokan szeretik a PowerShellt használni, mert lehetővé teszi számukra, hogy olyan dolgokat hajtsanak végre, amelyeket a Windows grafikus felületével nem lehet megtenni. Ennek ellenére tagadhatatlan, hogy egyes PowerShell-parancsmagok kissé fárasztóak vagy bonyolultak lehetnek. De mi van, ha mód van arra, hogy ezeket a parancsmagokat szerkeszthessük, és a kívánt módon „viselkedjenek”? Akár hiszi, akár nem, van egy egyszerű módja ennek. Módosíthatja a parancsmag viselkedését a PowerShell alapértelmezett paramétereinek értékeinek módosításával. Ez a cikk bemutatja, hogyan használhatja a PowerShell alapértelmezett paramétereit a parancsmag parancs viselkedésének megváltoztatásához.
Figyelem
Mielőtt elkezdené, néhány dolgot szem előtt kell tartania. Bár a PowerShell alapértelmezett paramétereinek és parancsmag-viselkedésének megváltoztatása kényelmes, problémákhoz vezethet. Ha egy szkriptet futtat, és a szkript feltételezi, hogy a módosított parancsmag egy bizonyos módon fog viselkedni, akkor előre nem látható eredményeket kaphat. Ezért gondosan módosítsa a PowerShell alapértelmezett paramétereit.
Gyors áttekintés
Két PowerShell-koncepciót kell ismernie ahhoz, hogy az alapértelmezett paraméterekkel dolgozhasson. Az első fogalom változó. A PowerShellben a változónevek mindig dollárjellel kezdődnek, és a változó tartalmát a változó nevének beírásával írhatja be.
A második fogalom, amelyet ismerhet, a hash-tábla. A hash tábla lényegében kulcs/érték párokból álló lista. Tegyük fel például, hogy szeretne létrehozni egy hash táblát, amely tartalmazza az Egyesült Államok államainak nevét és azok rövidítését. Alul a kód:
$StateList = @{}
$StateList.add('Florida','FL')
$StateList.add('South Carolina','SC')
$StateList.add('Georgia','GA')
$StateList
A kód első sora egy üres hash táblát hoz létre $StateList néven . A következő három sor bejegyzéseket ad a táblázathoz. Minden bejegyzés egy kulcsból (állapotnév) és egy értékből (állapot rövidítése) áll. Az utolsó sor a táblázat tartalmát tartalmazza. A kódot működés közben az alábbi képen láthatja.
Ez csak egy nagyon egyszerű példa, és sok más módja is van a hash táblák használatának.
Dolgozzon a PowerShell alapértelmezett paramétereivel
A PowerShell beépített változóval rendelkezik, amely a parancsmagjaival használt alapértelmezett paraméterek tárolására szolgál. Ezt a változót $PSDefaultParameterValues- nak hívják . Amint azt a változó kezdeti bevezetéséből és nevéből láthatta, ez nem egy közönséges változó, hanem egy hash tábla. Ha azonban beírja a változónevet a PowerShellbe, gyorsan látni fogja, hogy a táblázat üres, ahogy az alább látható.

Tehát mit tehetünk ezzel a $PSDefaultParameterValues változóval ? Ahogy fentebb említettük, szabályozhatja a PowerShell-parancsmagok viselkedését. Az egyetlen lényeg az, hogy nem tudja felülkerekedni a cmdlet parancs rejlő képességein. Tehát nézzünk egy példát.
Lehet, hogy ezt a példát nem szeretné a való életben használni, de megmutatja, milyen könnyű radikálisan megváltoztatni a parancsmag viselkedését. Ha megadja a Get-TimeZone parancsmagot a PowerShellben, látni fogja annak az időzónának a nevét, amelyre a számítógépe jelenleg be van állítva. Ezt a példát az alábbi képen láthatja.

Most úgy módosítjuk ezt a parancsmagot, hogy ne azt az időzónát jelenítse meg, amelyre a rendszer be van állítva, hanem a rendelkezésre álló időzónákat. Ehhez szükségünk van a parancsmag szintaxisára a Get-Help parancsmaggal , majd a Get-TimeZone parancsmaggal . Az alábbiakban láthatja a parancsmag szintaxisát.

Ez a szintaxis egy ListAvailable nevű paramétert tartalmaz . Írja be az alábbi parancsot:
$PSDefaultParameterValues.Add(“Get-TimeZone:ListAvailable”,$True)
A parancs első része egyszerűen közli a PowerShell-lel, hogy értéket szeretne hozzáadni a hash-táblához, ahogyan az előző szakaszban az Egyesült Államok államának rövidítésénél tettük. Ez a hash-tábla kulcs/érték párt tartalmaz. Ebben az esetben a kulcs a parancsmag neve (Get-TimeZone), amelyet egy vessző követ, és a beállítani kívánt paraméter neve. Ebben az esetben a paraméter neve ListAvailable. A parancsmag második része a paraméterhez rendelni kívánt érték. Itt van $True . A ListAvailable paraméternek általában nincs szüksége értékre, ezért a $True megadásával utasítja a PowerShellt, hogy használja ezt a paramétert anélkül, hogy értéket rendelne hozzá.
Ha megnézi az alábbi képet, látni fogja, mi történik a Get-TimeZone parancsmag futtatásakor.

Ne feledje
A legfontosabb tudnivaló, hogy új érték hozzáadása egy alapértelmezett PowerShell-paraméterhez a parancsmag alapértelmezett viselkedésének megváltoztatása, nem pedig a parancsmag képességeinek eltávolítása. Még akkor is, ha a Get-TimeZone parancsmagot úgy módosítja, hogy az elérhető időzónákat jelenítse meg az aktuális időzóna helyett. Továbbra is megjelenítheti az aktuális időzóna adatait, ha többet is megtekint.
Egy másik dolog, amit tudnia kell, hogy az egyéni alapértelmezett paraméterek eltávolíthatók. Egyetlen elem eltávolításához használja a $PSDefaultParameterValues.Remove parancsot , majd írja be az eltávolítani kívánt elem nevét. Például:
$PSDefaultParameterValues.Remove(“Get-TimeZone:ListAvailable”)
Ehelyett a hash tábla teljes tartalmát törölheti ezzel a paranccsal:
$PSDefaultParameterValues.Clear();
Az alábbiakban mindkét technikára láthat példát:

Törölheti a teljes hash táblát, vagy törölhet egyetlen bejegyzést.
A parancsmag-parancsok alapértelmezett viselkedésének megváltoztatása olyasmi, amit ritkán tesz meg, de amikor szüksége van rá, már tudja, hogyan módosíthatja.
Sok sikert kívánok!
Többet látni: