Daugelis žmonių mėgsta naudoti „PowerShell“ , nes tai leidžia daryti dalykus, kurių negalima padaryti naudojant „Windows“ GUI. Nepaisant to, negalima paneigti, kad kai kurios „PowerShell“ cmdlet gali būti šiek tiek varginančios ar sudėtingos. O kas, jei būtų galimybė redaguoti šias cmdlet ir priversti juos „elgtis“ taip, kaip norite? Tikėkite ar ne, yra paprastas būdas tai padaryti. Galite pakeisti cmdlet veikimą pakeisdami numatytųjų „PowerShell“ parametrų reikšmes. Šiame straipsnyje bus parodyta, kaip naudoti numatytuosius „PowerShell“ parametrus, kad pakeistumėte cmdlet komandos elgseną.
Įspėjimas
Prieš pradėdami, turite atsiminti keletą dalykų. Nors pakeisti PowerShell numatytuosius parametrus ir cmdelt elgseną yra patogu, tai gali sukelti problemų. Jei paleidžiate scenarijų ir šis scenarijus daro prielaidą, kad pakeista cmdlet veiks tam tikru būdu, galite gauti nenuspėjamų rezultatų. Todėl turėtumėte atidžiai pakeisti numatytuosius „PowerShell“ parametrus.
Greita apžvalga
Yra dvi „PowerShell“ sąvokos, kurias turite žinoti, kad galėtumėte dirbti su numatytaisiais parametrais. Pirmoji sąvoka yra kintama. „PowerShell“ kintamųjų pavadinimai visada prasideda dolerio ženklu, o kintamojo turinį galite parašyti įvesdami kintamojo pavadinimą.
Antroji sąvoka, kurią galbūt žinote, yra maišos lentelė. Maišos lentelė iš esmės yra sąrašas, sudarytas iš raktų / reikšmių porų. Pavyzdžiui, tarkime, kad norite sukurti maišos lentelę, kurioje būtų JAV valstijų pavadinimai ir jų santrumpos. Žemiau yra kodas:
$StateList = @{}
$StateList.add('Florida','FL')
$StateList.add('Pietų Karolina','SC')
$StateList.add('Gruzija','GA')
$StateList
Pirmoji kodo eilutė sukuria tuščią maišos lentelę, pavadintą $StateList . Kitos trys eilutės prideda lentelės įrašus. Kiekvieną įrašą sudaro raktas (būsenos pavadinimas) ir reikšmė (būsenos santrumpa). Paskutinėje eilutėje pateikiamas lentelės turinys. Žemiau esančiame paveikslėlyje galite pamatyti veikiantį kodą.
Tai tik labai paprastas pavyzdys ir yra daug kitų maišos lentelių naudojimo būdų.
Dirbkite su numatytais PowerShell parametrais
„PowerShell“ turi integruotą kintamąjį, naudojamą numatytiesiems parametrams, naudojamiems su jo cmdlet, saugoti. Šis kintamasis vadinamas $PSDefaultParameterValues . Kaip galbūt pastebėjote iš pradinio kintamojo įvado ir pavadinimo, tai nėra įprastas kintamasis, o maišos lentelė. Tačiau jei įvesite kintamojo pavadinimą į PowerShell, greitai pamatysite, kad lentelė tuščia, kaip parodyta toliau.

Taigi, ką galime padaryti su šiuo $PSDefaultParameterValues kintamuoju . Kaip minėta pirmiau, galite valdyti PowerShell cmdlet veikimą. Vienintelis dalykas yra tai, kad negalite įveikti būdingų cmdlet komandos galimybių. Taigi pažiūrėkime į pavyzdį.
Šis pavyzdys gali būti ne tai, ko norėtumėte naudoti realiame gyvenime, tačiau jis parodys, kaip lengva iš esmės pakeisti cmdlet elgesį. Jei PowerShell įvesite cmdlet Get-TimeZone , pamatysite laiko juostos, kurią šiuo metu sukonfigūruotas naudoti jūsų kompiuteris, pavadinimą. Šį pavyzdį galite pamatyti toliau pateiktame paveikslėlyje.

Dabar pakeičiame šią cmdlet, kad joje būtų rodoma ne laiko juosta, kurią sistema sukonfigūruota naudoti, o galimos laiko juostos. Norėdami tai padaryti, mums reikia cmdlet sintaksės naudojant Get-Help cmdlet , po kurio seka Get-TimeZone cmdlet . Žemiau galite pamatyti cmdlet sintaksę.

Ši sintaksė apima parametrą ListAvailable . Įveskite žemiau esančią komandą:
$PSDefaultParameterValues.Add(“Get-TimeZone:ListAvailable”,$True)
Pirmoji šios komandos dalis tiesiog nurodo „PowerShell“, kad norite pridėti vertę maišos lentelėje, kaip tai padarėme su JAV valstijos santrumpos pavyzdžiu ankstesniame skyriuje. Šioje maišos lentelėje yra raktų/reikšmių pora. Šiuo atveju raktas yra cmdlet pavadinimas (Get-TimeZone), po kurio rašomas kablelis ir parametro, kurį norite nustatyti, pavadinimas. Šiuo atveju parametro pavadinimas yra ListAvailable. Antroji šios cmdlet dalis yra reikšmė, kurią norite priskirti parametrui. Štai $True . Parametrui ListAvailable reikšmės paprastai nereikia, todėl nurodę $True nurodote PowerShell naudoti šį parametrą nepriskiriant jam reikšmės.
Jei pažvelgsite į žemiau esantį paveikslėlį, pamatysite, kas atsitiks, kai paleisite Get-TimeZone cmdlet.

Ką reikia turėti omenyje
Svarbiausia suprasti, kad naujos PowerShell numatytojo parametro vertės pridėjimas reiškia, kad pakeisite numatytąją cmdlet veikimą, o ne pašalinsite cmdlet galimybes. Net kai pakeičiate Get-TimeZone cmdlet, kad būtų rodomos galimos laiko juostos, o ne dabartinė laiko juosta. Vis tiek galite rodyti dabartinės laiko juostos informaciją, jei peržiūrėsite daugiau.
Kitas dalykas, kurį reikia žinoti, yra tai, kad pasirinktinius numatytuosius parametrus galima pašalinti. Norėdami pašalinti vieną elementą, naudokite komandą $PSDefaultParameterValues.Remove , po kurios nurodykite elemento, kurį norite pašalinti, pavadinimą. Pavyzdžiui:
$PSDefaultParameterValues.Remove("Get-TimeZone:ListAvailable")
Vietoj to galite ištrinti visą maišos lentelės turinį naudodami šią komandą:
$PSDefaultParameterValues.Clear();
Žemiau galite pamatyti abiejų technikų pavyzdžius:

Galite ištrinti visą maišos lentelę arba ištrinti vieną įrašą.
Numatytosios cmdlet komandos veikimo keitimas yra kažkas, ko nedarote dažnai, bet kai jums to reikia, jau žinote, kaip tai pakeisti.
Linkime sėkmės!
Žiūrėti daugiau: