Daudziem cilvēkiem patīk izmantot PowerShell , jo tas ļauj veikt darbības, ko nevar izdarīt ar Windows GUI. Tomēr nevar noliegt, ka dažas PowerShell cmdlet var būt nedaudz nogurdinošas vai sarežģītas. Bet ko tad, ja būtu veids, kā rediģēt šīs cmdlet un likt tām “uzvesties” tā, kā vēlaties? Ticiet vai nē, ir vienkāršs veids, kā to izdarīt. Varat mainīt cmdlet darbību, mainot PowerShell noklusējuma parametru vērtības. Šajā rakstā tiks parādīts, kā izmantot PowerShell noklusējuma parametrus, lai mainītu cmdlet komandu darbību.
Brīdinājums
Pirms sākat darbu, ir jāpatur prātā dažas lietas. Lai gan PowerShell noklusējuma parametru un cmdelt darbības maiņa ir ērta, tā var radīt problēmas. Ja palaižat skriptu un šis skripts pieņem, ka modificētā cmdlet darbosies noteiktā veidā, varat iegūt neparedzamus rezultātus. Tāpēc rūpīgi jāmaina PowerShell noklusējuma parametri.
Ātra apskate
Ir divas PowerShell koncepcijas, kas jums jāzina, lai strādātu ar noklusējuma parametriem. Pirmais jēdziens ir mainīgs. Programmā PowerShell mainīgo nosaukumi vienmēr sākas ar dolāra zīmi, un mainīgā saturu var ierakstīt, ierakstot mainīgā nosaukumu.
Otrs jēdziens, kas jums, iespējams, ir pazīstams, ir hash tabula. Hash tabula būtībā ir saraksts, kas sastāv no atslēgu/vērtību pāriem. Piemēram, pieņemsim, ka vēlaties izveidot hash tabulu, kurā ir ietverti ASV štatu nosaukumi un to saīsinājumi. Zemāk ir kods:
$StateList = @{}
$StateList.add('Florida','FL')
$StateList.add('South Carolina','SC')
$StateList.add('Georgia','GA')
$StateList
Pirmā koda rindiņa izveido tukšu hash tabulu ar nosaukumu $StateList . Nākamās trīs rindas pievieno ierakstus tabulai. Katrs ieraksts sastāv no atslēgas (štata nosaukums) un vērtības (stāvokļa saīsinājums). Pēdējā rindā ir norādīts tabulas saturs. Jūs varat redzēt kodu darbībā zemāk esošajā attēlā.
Šis ir tikai ļoti vienkāršs piemērs, un ir daudz citu veidu, kā izmantot hash tabulas.
Strādājiet ar PowerShell noklusējuma parametriem
PowerShell ir iebūvēts mainīgais, ko izmanto, lai saglabātu noklusējuma parametrus, kas tiek izmantoti ar tā cmdlet. Šo mainīgo sauc par $PSDefaultParameterValues . Kā jūs, iespējams, pamanījāt no sākotnējā ievada un mainīgā nosaukuma, tas nav parasts mainīgais, bet gan hash tabula. Tomēr, ja ievadāt mainīgā nosaukumu programmā PowerShell, jūs ātri redzēsit, ka tabula ir tukša, kā parādīts tālāk.

Tātad, ko mēs varam darīt ar šo mainīgo $PSDefaultParameterValues ? Kā minēts iepriekš, jūs varat kontrolēt PowerShell cmdlet darbību. Vienīgais jautājums ir tāds, ka jūs nevarat pārvarēt cmdlet komandas raksturīgās iespējas. Tātad, aplūkosim piemēru.
Šis piemērs var nebūt tas, ko vēlaties izmantot reālajā dzīvē, taču tas parādīs, cik viegli ir radikāli mainīt cmdlet uzvedību. Ja programmā PowerShell ievadāt cmdlet Get-TimeZone , tiks parādīts tās laika joslas nosaukums, kuras lietošanai jūsu dators pašlaik ir konfigurēts. Šo piemēru varat redzēt zemāk esošajā attēlā.

Tagad mēs mainām šo cmdlet, lai tajā netiktu parādīta laika josla, kurai sistēma ir konfigurēta, bet gan pieejamās laika joslas. Lai to izdarītu, mums ir nepieciešama cmdlet sintakse, izmantojot cmdlet Get-Help , kam seko Get-TimeZone cmdlet . Tālāk varat redzēt cmdlet sintaksi.

Šī sintakse ietver parametru ListAvailable . Ievadiet tālāk norādīto komandu:
$PSDefaultParameterValues.Add(“Get-TimeZone:ListAvailable”,$True)
Šīs komandas pirmā daļa vienkārši norāda PowerShell, ka vēlaties pievienot vērtību jaucēj tabulai, tāpat kā mēs to darījām ar ASV štata saīsinājuma piemēru iepriekšējā sadaļā. Šajā hash tabulā ir atslēgas/vērtības pāris. Šajā gadījumā atslēga ir cmdlet nosaukums (Get-TimeZone), kam seko komats un tā parametra nosaukums, kuru vēlaties iestatīt. Šajā gadījumā parametra nosaukums ir ListAvailable. Šīs cmdlet otrā daļa ir vērtība, kuru vēlaties piešķirt parametram. Šeit tas ir $True . Parametram ListAvailable parasti nav nepieciešama vērtība, tāpēc, norādot $True, jūs varat norādīt PowerShell izmantot šo parametru, nepiešķirot tam vērtību.
Apskatot tālāk redzamo attēlu, redzēsit, kas notiek, palaižot cmdlet Get-TimeZone.

Lietas, kas jāpatur prātā
Vissvarīgākais ir saprast, ka jaunas vērtības pievienošana PowerShell noklusējuma parametram ir mainīt cmdlet noklusējuma darbību, nevis noņemt cmdlet iespējas. Pat ja maināt cmdlet Get-TimeZone, lai rādītu pieejamās laika joslas, nevis pašreizējo laika joslu. Jūs joprojām varat parādīt pašreizējās laika joslas informāciju, ja skatāt vairāk.
Vēl viena lieta, kas jums jāzina, ir tā, ka pielāgotos noklusējuma parametrus var noņemt. Lai noņemtu vienu vienumu, izmantojiet komandu $PSDefaultParameterValues.Remove , kam seko tā vienuma nosaukums, kuru vēlaties noņemt. Piemēram:
$PSDefaultParameterValues.Remove(“Get-TimeZone:ListAvailable”)
Tā vietā varat dzēst visu hash tabulas saturu, izmantojot šo komandu:
$PSDefaultParameterValues.Clear();
Tālāk varat redzēt abu paņēmienu piemērus:

Varat izdzēst visu hash tabulu vai dzēst vienu ierakstu.
Mainot cmdlet komandas noklusējuma darbību, jūs nedarāt bieži, taču, kad tas ir nepieciešams, jūs jau zināt, kā to mainīt.
Novēlam veiksmi!
Redzēt vairāk: