Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
54
WindowsPowerShellprzewodnikposkryptach
Abywskazać,żejakonarzędziebadającezgodnośćwartościzpodanymiwzorcami
mająbyćużywanewyrażeniaregularne,należypoinstrukcjiswitchpodaćparametr-regex.
Wartośćbadanaprzezinstrukcjęswitch,podawanawnawiasachzwykłych,faktyczniejest
wyrażeniempodrzędnym,któreotwieraiodczytujepliktekstowy
.Znak$umieszczony
przednawiasamiklamrowymi,wktórychznajdujesięścieżkadoplikutekstowego,ozna-
czapolecenieotwarciategoplikuiwczytaniagodopamięci.Następnienastępujenawias
klamrowyotwierającyblokinstrukcjiswitch,wktórymumieszczanesą,ujętewznakiapo-
strofu,kolejnewzorcedoporównywania.Blokkodu,któryzostaniewykonanypozna-
lezieniudopasowaniadopodanegowyrażeniaregularnego,równieżujętyjestwznaki
nawiasówklamrowychiwtymprzykładzieskładasięzprostejinstrukcjiwrite-host.Wtym
przykładziedopobraniabieżącej,pasującejdopodanegowzorcaliniiponowniewykorzy-
stanazostałazmiennalicznikowa$switch.
SwitchRegEx.ps1
switch-regex(${c:\testa.txt})
{
'test'{Write-Host$switch.current}
'good'{Write-Host$switch.current}
}
ZawartośćplikuTestA.txtzostałapokazanaponiżej.Tenprzykładowyplikmożnawyko-
rzystaćdotestowaniadziałaniapokazanegopowyżejskryptuibadaniawynikówjego
działania.
TestA.txt
Thiswasatestfile.
Thiswasagoodfile.
Thiswasagoodtestfile.
Prawdopodobniebardziejużytecznymprzykłademzastosowaniawyrażeńregularnych
wpołączeniuzinstrukcjąswitchbędzieskryptVersionOfVista.ps1.Zmiennej$strPat-
ternprzypisanyzostajełańcuchznakowyversion,awzmiennej$textumieszczonyzostaje
wynikpolecenianetconfigworkstation.Następnieużytezostajepolecenieswitchzpara-
metrem-regex,zapomocąktóregowyszukiwanewystąpieniawzmiennej$textwzorca
zapisanegowzmiennej$strPattern.Poodnalezieniutakiegowzorcawypisanazostajecała
liniaprzyużyciuwłaściwościcurrentzmiennejautomatycznej$switch.Skrypttenzwraca
informacjęoposiadanejwersjisystemuWindowsVista.Całystrumieńwyjściowypolecenia
netconfigworkstationmadługość19linii.Dlaporównaniarezultatów,poniżejzamiesz-
czonoprzykładowyrezultatdziałaniaskryptówVersionOfVista.ps1:
Softwareversion
WindowsVista(TM)Enterprise
VersionOfVista.ps1
$strPattern="version"
$text=netconfigworkstation
switch-regex($text)
{
$strPattern{Write-Host$switch.current}
}