563
Soós Tibor Microsoft PowerShell 2.0 rendszergazdáknak – elmélet és gyakorlat PS C:\> Get-Book | Where-Object {$_.Title -match "PowerShell 2"} Microsoft Magyarország 2010

Microsoft Powershell 2 Konyv

  • Upload
    szula

  • View
    294

  • Download
    18

Embed Size (px)

Citation preview

Sos Tibor

Microsoft PowerShell 2.0rendszergazdknak elmlet s gyakorlat

PS C:\> Get-Book | Where-Object {$_.Title -match "PowerShell 2"}

Microsoft Magyarorszg 2010

2010, Sos Tibor, a knyv egyes rszei az 1. kiadsbl Szernyi Lszl munki Msodik, a PowerShell 2.0-ra tdolgozott kiads. Minden jog fenntartva!

A knyv vagy annak brmely rsze, valamint a benne szerepl pldk a szerzvel kttt megllapods nlkl nem hasznlhatk fel zleti s oktatsi tevkenysg sorn, klns tekintettel tanfolyami felhasznlsra! Tanfolyami clra a szerz kt ktetre bontott, vzjel nlkli pldnyt biztost, gyakorl feladatokkal s megoldsokkal egytt.A szerz a knyv rsa sorn trekedett arra, hogy a lert tartalom a lehet legpontosabb s napraksz legyen. Ennek ellenre elfordulhatnak hibk, vagy bizonyos informcik elavultt vlhattak. A knyvben lert programkdokat mindenki sajt felelssgre alkalmazhatja. Javasoljuk, hogy ezeket ne les krnyezetben prbljk ki. A felhasznlsbl fakad esetleges krokrt sem a szerzk, sem a kiad nem vonhat felelssgre. Az oldalakon elfordul mrka- valamint kereskedelmi vdjegyek bejegyzjk tulajdonban llnak.

Zsfinak, aki elviselte, hogy sok-sok jszakn t dolgoztam ezen a knyvn, s desapmnak, aki megismertetett a szmtgpek vilgval.

1.1 Elsz a 2. kiadshoz

Tartalomjegyzk1. Elmlet ...................................................................................................................................... 91.1 Elsz a 2. kiadshoz ........................................................................................................................ 9 1.2 Kezdetek ........................................................................................................................................ 111.2.1 A PowerShell teleptse ...................................................................................................................................... 11 1.2.2 Indtsuk el a PowerShellt! ................................................................................................................................... 11 1.2.3 Hello World! ........................................................................................................................................................ 15 1.2.4 DOS parancsok vgrehajtsa ............................................................................................................................... 16 1.2.5 Gyorsbillentyk, belltsok ................................................................................................................................ 16 1.2.6 A TAB-billenty.................................................................................................................................................... 19 1.2.7 Promptok, beviteli sor ......................................................................................................................................... 20 1.2.8 Parancstrtnet .................................................................................................................................................. 21 1.2.9 A PowerShell, mint szmolgp .......................................................................................................................... 23 1.2.10 A konzol trlse................................................................................................................................................. 23 1.2.11 Kis-nagybet ...................................................................................................................................................... 23 1.2.12 A grafikus PowerShell fellet Integrated Scripting Environment ................................................................... 24

1.3 Alapfogalmak ................................................................................................................................. 271.3.1 Architektra ........................................................................................................................................................ 27 1.3.2 Command s cmdlet ........................................................................................................................................... 29 1.3.3 Segtsg! (Get-Help) ............................................................................................................................................ 30 1.3.4 A grafikus help ..................................................................................................................................................... 32 1.3.5 Cmdletek paramterezse .................................................................................................................................. 33 1.3.6 Ki-mit-tud (Get-Member) .................................................................................................................................... 35 1.3.7 Alias, becenv, lnv ........................................................................................................................................... 37 1.3.8 PSDrive, PSProvider ............................................................................................................................................. 39 1.3.8.1 Meghajtk ltrehozsa s trlse (New-PSDrive, Remove-PSDrive) .......................................................... 41 1.3.9 Vltozk, konstansok .......................................................................................................................................... 43 1.3.10 Idzjelezs, escape hasznlat .......................................................................................................................... 47 1.3.11 Sortrs, tbbsoros kifejezsek ........................................................................................................................ 49 1.3.12 Kifejezs- s parancsfeldolgozs ....................................................................................................................... 50 1.3.13 Utastsok lezrsa............................................................................................................................................ 52 1.3.14 Csvezetk, futszalag (Pipeline) ...................................................................................................................... 52 1.3.15 Kimenet (Output) .............................................................................................................................................. 55 1.3.16 Jvhagys kezelse, vatos vgrehajts ......................................................................................................... 57 1.3.17 Egyszer formzs............................................................................................................................................. 59 1.3.18 HTML output ..................................................................................................................................................... 64

1.4 Tpusok .......................................................................................................................................... 661.4.1 Tpusok, tpuskezels .......................................................................................................................................... 66 1.4.2 Szmtpusok ........................................................................................................................................................ 69 1.4.3 Tmbk ............................................................................................................................................................... 69 1.4.3.1 Egyszer tmbk ......................................................................................................................................... 70 1.4.3.2 Tbbdimenzis tmbk ............................................................................................................................... 78 1.4.3.3 Tpusos tmbk ........................................................................................................................................... 79 1.4.3.4 Generic adattpus paramterezhet tpusos tmb .................................................................................. 79 1.4.4 Sztrak (hashtblk) s sztrtmbk .............................................................................................................. 80 1.4.4.1 A sztr ltalnos adattpusa ...................................................................................................................... 86 1.4.5 Dtumok (*datetime+, Get-Date, Set-Date) ......................................................................................................... 86 1.4.6 Idtartam szmts (New-TimeSpan) .................................................................................................................. 89 1.4.7 Automatikus tpuskonverzi ............................................................................................................................... 90 1.4.8 Tpuskonverzi .................................................................................................................................................... 91 1.4.9 .NET tpusok, statikus tagok ................................................................................................................................ 93

A knyv tanfolyami felhasznlsa nem engedlyezett!

1

Sos Tibor soost@ IQJB.hu

1. Elmlet1.4.10 A .NET osztlyok feldertse ............................................................................................................................. 95 1.4.11 PowerShell objektumok vizsglata (Format-Custom) ....................................................................................... 98 1.4.12 Objektumok testre szabsa, kiegsztse ......................................................................................................... 99 1.4.13 Osztlyok (tpusok) testre szabsa .................................................................................................................. 103 1.4.14 PSBase, PSAdapted, PSExtended, PSObject nzetek ...................................................................................... 105 1.4.15 j tpusok ltrehozsa (Add-Type).................................................................................................................. 110 1.4.16 Formzs testre szabsa (Export-FormatData, Get-FormatData, Update-FormatData) .............................. 114 1.4.17 Objektumok mentse, visszatltse ............................................................................................................... 118

1.5 Opertorok .................................................................................................................................. 1201.5.1 Aritmetikai opertorok ..................................................................................................................................... 120 1.5.1.1 sszeads .................................................................................................................................................. 120 1.5.1.2 Tbbszrzs ............................................................................................................................................ 122 1.5.1.3 Oszts, maradkos oszts ......................................................................................................................... 123 1.5.2 rtkads .......................................................................................................................................................... 124 1.5.3 sszehasonlt opertorok ............................................................................................................................... 126 1.5.4 Tartalmaz (-contains, -notcontains, -ccontains, -cnotcontains) ....................................................................... 128 1.5.5 Dzsker-mintk (-like) ....................................................................................................................................... 128 1.5.6 Regex (-match, -replace) ................................................................................................................................... 130 1.5.6.1 Van-e benne vagy nincs?........................................................................................................................... 131 1.5.6.2 Tovbbi karakterosztlyok ........................................................................................................................ 133 1.5.6.3 Van benne, de mi? .................................................................................................................................... 135 1.5.6.4 A moh regex ............................................................................................................................................ 135 1.5.6.5 Escape a Regex-ben................................................................................................................................... 136 1.5.6.6 Tudjuk, hogy mi, de hol van? .................................................................................................................... 137 1.5.6.7 Tekintsnk elre s htra a mintban....................................................................................................... 140 1.5.6.8 A mintm visszakszn ............................................................................................................................. 142 1.5.6.9 Vltozatok a keressre .............................................................................................................................. 143 1.5.6.10 Tudjuk, hogy mi, de hnyszor? ................................................................................................................ 145 1.5.6.11 Regexre cmdlettel (Select-String) ........................................................................................................... 148 1.5.6.12 Csere ....................................................................................................................................................... 149 1.5.7 Logikai s bitszint opertorok ......................................................................................................................... 150 1.5.8 Tpusvizsglat, tpuskonverzi (-is, -isnot, -as) .................................................................................................. 152 1.5.9 Egytag opertorok (+, -, ++, --, *tpus+) ........................................................................................................... 153 1.5.10 Csoportost opertorok ................................................................................................................................ 154 1.5.10.1 Gmbly zrjel: () ................................................................................................................................ 154 1.5.10.2 Dollros gmbly zrjel: $() ................................................................................................................ 155 1.5.10.3 Kukacos gmbly zrjel: @() ............................................................................................................... 156 1.5.10.4 Kapcsos zrjel: ,- (bajusz) ...................................................................................................................... 156 1.5.10.5 Dollros kapcsos zrjel: $,- ................................................................................................................... 157 1.5.10.6 Szgletes zrjel: *+ ................................................................................................................................. 158 1.5.11 Tmbelem-opertor: , ................................................................................................................................. 158 1.5.12 Tartomny-opertor: .. ................................................................................................................................ 158 1.5.13 Tulajdonsg, metdus s statikus metdus opertora: ., :: ..................................................................... 159 1.5.14 Vgrehajts ..................................................................................................................................................... 160 1.5.15 Formz opertor ........................................................................................................................................... 161 1.5.16 tirnyts: >, >> ...................................................................................................................................... 163 1.5.17 Az sszefzs s sztdarabols opertora (-join, -split, -csplit) ...................................................................... 164

1.6 Vezrl utastsok ........................................................................................................................ 1671.6.1 IF/ELSEIF/ELSE ................................................................................................................................................... 167 1.6.2 WHILE, DO-WHILE ............................................................................................................................................. 167 1.6.3 FOR.................................................................................................................................................................... 168 1.6.4 FOREACH ........................................................................................................................................................... 168 1.6.4.1 $foreach vltoz ....................................................................................................................................... 169 1.6.5 ForEach-Object cmdlet ..................................................................................................................................... 170 1.6.6 Where-Object cmdlet ....................................................................................................................................... 172 1.6.7 Cmkk, trs (Break), folytats (Continue) ...................................................................................................... 172

A knyv tanfolyami felhasznlsa nem engedlyezett!

2

Sos Tibor soost@ IQJB.hu

1.1 Elsz a 2. kiadshoz1.6.8 SWITCH..............................................................................................................................................................174 1.6.8.1 wildcard ...................................................................................................................................................176 1.6.8.2 regex ........................................................................................................................................................176 1.6.8.3 A $switch vltoz ......................................................................................................................................177

1.7 Fggvnyek .................................................................................................................................. 1781.7.1 Az els fggvnyem ..........................................................................................................................................178 1.7.2 Paramterek ......................................................................................................................................................178 1.7.2.1 Paramterinicializls................................................................................................................................179 1.7.2.2 Tpusos paramterek .................................................................................................................................180 1.7.2.3 Hibajelzs ..................................................................................................................................................181 1.7.2.4 Vltoz szm paramter .........................................................................................................................182 1.7.2.5 Hivatkozs paramterekre ........................................................................................................................182 1.7.2.6 Paramtertads vltoz sztpasszrozsval (splat opertor) ................................................................183 1.7.2.7 Kapcsol paramter (*switch+) ..................................................................................................................184 1.7.2.8 Paramter-definci a fggvnytrzsben (param) ....................................................................................185 1.7.2.9 Paramterek, vltozk ellenrzse (validls) ..........................................................................................186 1.7.3 Fggvny a parancsfeldolgozs elnyeinek kihasznlsra ..............................................................................188 1.7.4 Vltozk lthatsga (scope) ............................................................................................................................189 1.7.4.1 Privt, privt, privt ...................................................................................................................................192 1.7.5 Fggvnyek lthatsga, dotsourcing ...........................................................................................................193 1.7.6 Referencilis hivatkozs paramterekre (*ref+) .................................................................................................195 1.7.7 Kilps a fggvnybl (return) ..........................................................................................................................196 1.7.8 Pipe kezelse, filter ...........................................................................................................................................197 1.7.9 Szkriptblokkok ...................................................................................................................................................200 1.7.9.1 Anonim fggvnyek ...................................................................................................................................200 1.7.10 Fggvnyek trlse, mdostsa .....................................................................................................................201 1.7.11 Gyri fggvnyek .............................................................................................................................................204

1.8 Szkriptek ...................................................................................................................................... 2061.8.1 Szkriptek engedlyezse s indtsa .................................................................................................................206 1.8.2 Vltozk kiszippantsa a szkriptekbl (dot sourcing) .......................................................................................210 1.8.3 Paramterek tvtele s a szkript ltal visszaadott rtk .................................................................................211 1.8.4 Szkriptek rsa a gyakorlatban ..........................................................................................................................213 1.8.4.1 PowerGUI Script Editor..............................................................................................................................213 1.8.4.2 Megjegyzsek, kommentezs (#, ) ...................................................................................................214 1.8.5 Adatbekrs (Read-Host) ..................................................................................................................................215 1.8.6 Szkriptek digitlis alrsa .................................................................................................................................216 1.8.7 Vgrehajtsi preferencia ...................................................................................................................................221

1.9 Fontosabb cmdletek ..................................................................................................................... 2231.9.1 Vletlen szm generls s annl sokkal tbb (Get-Random) ..........................................................................223 1.9.2 Csvezetk feldolgozsa (Foreach-Object) jra .............................................................................................224 1.9.3 A csvezetk elgaztatsa (Tee-Object)............................................................................................................226 1.9.4 Csoportosts (Group-Object) ...........................................................................................................................226 1.9.5 Objektumok talaktsa (Select-Object) ...........................................................................................................229 1.9.6 Rendezs (Sort-Object) .....................................................................................................................................234 1.9.7 Mg egyszer formzs (Format-Table, Format-Wide) ......................................................................................235 1.9.8 Kimenet megjelentse grafikus rcsban (Out-GridView) .................................................................................237 1.9.9 Gyjtemnyek sszehasonltsa (Compare-Object) .........................................................................................239 1.9.10 Klnbz objektumok (Get-Unique) .............................................................................................................241 1.9.11 Szmlls (Measure-Object) ...........................................................................................................................242 1.9.12 Nyomtats (Out-Printer) .................................................................................................................................243 1.9.13 Kirs fjlba (Out-File, Export-) ........................................................................................................................243 1.9.14 Egyni objektumok ltrehozsa CSV adatokbl (ConvertFrom-CSV) ..............................................................247 1.9.15 Tblzatok kezelse (Import-Csv, ConvertFrom-Csv, ConvertTo-Csv) ............................................................248 1.9.16 talakts szvegg (Out-String) .....................................................................................................................249 1.9.17 Lista-tulajdonsgok mdostsa (Update-List) ................................................................................................250

A knyv tanfolyami felhasznlsa nem engedlyezett!

3

Sos Tibor soost@ IQJB.hu

1. Elmlet1.9.18 Kimenet trlse (Out-Null).............................................................................................................................. 252

1.10 Futtats httrben ..................................................................................................................... 253 1.11 Tvoli futtats ............................................................................................................................ 258 1.12 sszefoglal: PowerShell programozsi stlus ............................................................................. 263

2.

Gyakorlat ........................................................................................................................... 2652.1 PowerShell krnyezet ................................................................................................................... 2652.1.1 Szkriptknyvtrak, futtatsi informcik ($myinvocation) ............................................................................... 265 2.1.1.1 A $MyInvocation felhasznlsa parancssor-elemzsre ............................................................................ 269 2.1.2 Automatikus vltozk ....................................................................................................................................... 270 2.1.2.1 Paramterezs vizsglata ($PSBoundParameters) ................................................................................... 272 2.1.2.2 Preferencia-vltozk ................................................................................................................................. 274 2.1.2.3 Lpjnk kapcsolatba a konzolablakkal ($host) .......................................................................................... 275 2.1.3 Krnyezeti vltozk (env:) ................................................................................................................................ 277 2.1.4 Prompt belltsa .............................................................................................................................................. 279 2.1.5 Snapin-ek .......................................................................................................................................................... 279 2.1.6 Konzolfjl .......................................................................................................................................................... 282 2.1.7 Modulok ............................................................................................................................................................ 282 2.1.7.1 Modulok importlsa s eltvoltsa ........................................................................................................ 283 2.1.7.2 Szkriptmodulok ......................................................................................................................................... 286 2.1.7.3 Moduljegyzk ksztse (Module Manifest) ............................................................................................. 288 2.1.7.4 Jegyzkmodul (Manifest Module) ............................................................................................................. 291 2.1.7.5 Binris s dinamikus modulok................................................................................................................... 292 2.1.8 Profilok .............................................................................................................................................................. 293 2.1.9 rktsk meg munknkat (start-transcript) .................................................................................................... 293 2.1.10 Stopperoljuk a futsi idt s vrakozzunk (measure-command, start-sleep, get-history) ............................. 294 2.1.11 Elrehalads jelzse (write-progress) ............................................................................................................. 296 2.1.12 Levlklds ..................................................................................................................................................... 297

2.2 Segdprogramok .......................................................................................................................... 2982.2.1 PowerGUI, PowerGUI Script Editor ................................................................................................................... 298 2.2.2 RegexBuddy ...................................................................................................................................................... 302 2.2.3 Reflector ........................................................................................................................................................... 303 2.2.4 PSPlus ................................................................................................................................................................ 304

2.3 Hibakezels .................................................................................................................................. 3062.3.1 Megszakt s nem megszakt hibk .............................................................................................................. 306 2.3.2 Hibajelzs kiolvassa ($error) ........................................................................................................................... 309 2.3.3 Hibakezels globlis paramterei ..................................................................................................................... 311 2.3.4 Hibakezels sajt fggvnyeinkben (trap, try, catch, finally) ........................................................................... 312 2.3.4.1 Tbbszint csapda..................................................................................................................................... 317 2.3.4.2 Dobom s elkapom ................................................................................................................................... 319 2.3.4.3 Try, Catch, Finally ...................................................................................................................................... 321 2.3.5 Nem megszakt hibk kezelse fggvnyeinkben ........................................................................................... 324 2.3.6 Hibakeress....................................................................................................................................................... 325 2.3.6.1 Sttusjelzs (write-verbose, write-debug) ................................................................................................ 326 2.3.6.2 Lpsenknti vgrehajts s szigor vltozkezels (set-psdebug) ......................................................... 327 2.3.6.3 ssunk mg mlyebbre (Trace-Command) ............................................................................................... 330 2.3.6.4 Megszaktsi pontok kezelse a konzolon ................................................................................................ 333 2.3.6.5 Megszaktsi pontok kezelse a grafikus szerkesztben .......................................................................... 338 2.3.7 A PowerShell esemnynaplja .......................................................................................................................... 339

2.4 Fejlett fggvnyek script cmdletek ............................................................................................. 3412.4.1 Az els fejlett fggvnyem ................................................................................................................................ 341 2.4.2 Paramterek ellenrzse .................................................................................................................................. 345 2.4.3 Cselemek kezelse .......................................................................................................................................... 347

A knyv tanfolyami felhasznlsa nem engedlyezett!

4

Sos Tibor soost@ IQJB.hu

1.1 Elsz a 2. kiadshoz2.4.4 Fggvnyeink vatos vgrehajtsa (-WhatIf) ....................................................................................................349 2.4.5 Meglev cmdletek kiegsztse, talaktsa .....................................................................................................352 2.4.6 Dinamikus paramterek ....................................................................................................................................356 2.4.7 Sg ksztse ...................................................................................................................................................361 2.4.8 Szkriptek nemzetkziestse .............................................................................................................................365

2.5 Fjlkezels .................................................................................................................................... 3702.5.1 Fjl s knyvtr ltrehozsa (new-item), ellenrzse (test-path) .....................................................................370 2.5.2 Tovbbi jtkok az elrsi utakkal ....................................................................................................................371 2.5.3 Rejtett fjlok ......................................................................................................................................................373 2.5.4 Szvegfjlok feldolgozsa (Get-Content, Select-String) ....................................................................................373 2.5.5 Sortrs kezelse szvegfjlokban ...................................................................................................................377 2.5.6 Fjl hozzfrsi listja (get-acl, set-acl) .............................................................................................................378 2.5.6.1 Fjlok tulajdonosai ....................................................................................................................................380 2.5.6.2 rklds ellenrzse, belltsa ..............................................................................................................381 2.5.7 Ideiglenes fjlok ltrehozsa .............................................................................................................................384 2.5.8 XML fjlok kezelse ...........................................................................................................................................385 2.5.9 Megosztsok s webmappk elrse................................................................................................................386

2.6 Az Esemnynapl feldolgozsa...................................................................................................... 3882.6.1 Hagyomnyos esemnynaplk kezelse (Get-EventLog) ..................................................................................388 2.6.2 Az j alkalmazs- s szolgltatsnaplk kezelse (Get-WinEvent) ...................................................................392 2.6.3 Tvoli gpek esemnynaplinak megtekintse ................................................................................................395 2.6.4 Esemnynaplval kapcsolatos egyb mveletek ..............................................................................................396

2.7 Registry kezelse .......................................................................................................................... 3992.7.1 Olvass a registrybl .........................................................................................................................................399 2.7.2 Registry elemek ltrehozsa, mdostsa .........................................................................................................401 2.7.3 Registry elemek hozzfrsi listjnak kiolvassa ............................................................................................403

2.8 Tranzakcikezels ......................................................................................................................... 404 2.9 Szmtgpek s a hlzati kapcsolatok cmdletei .......................................................................... 408 2.10 Helyrelltsi pontok kezelse ..................................................................................................... 411 2.11 WMI, processzek, rendszerszolgltatsok .................................................................................... 4132.11.1 WMI objektumok elrse PowerShell-bl ......................................................................................................413 2.11.2 Folyamatok s rendszerszolgltatsok ............................................................................................................419 2.11.2.1 Szolgltatsok Startup tulajdonsga .......................................................................................................422 2.11.3 WMI objektumok metdusainak meghvsa (Invoke-WMIMethod) ..............................................................423 2.11.4 WMI objektumok tulajdonsgainak mdostsa, j objektumok ltrehozsa s eltvoltsa (SetWMIInstance, Remove-WMIObject) ..........................................................................................................................428 2.11.5 Fontosabb WMI osztlyok ...............................................................................................................................430

2.12 Teljestmny-monitorozs (Get-Counter, Export-, Import-Counter) .............................................. 433 2.13 Az ActiveDirectory modul ........................................................................................................... 4382.13.1 Szrs AD objektumokra .................................................................................................................................442 2.13.2 Keress egyb paramterei ............................................................................................................................447 2.13.3 Objektumok ltrehozsa .................................................................................................................................448 2.13.4 Objektumok mdostsa .................................................................................................................................449 2.13.5 Az AD meghajt ...............................................................................................................................................453 2.13.6 Informcik az AD erdrl, tartomnyrl, tartomnyvezrlkrl ..................................................................459 2.13.7 Egyb mveletek AD objektumokkal ..............................................................................................................461 2.13.8 A Management Gateway ................................................................................................................................462

2.14 Tvoli futtatsi krnyezet testre szabsa ..................................................................................... 463 2.15 .NET Framework hasznos osztlyai .............................................................................................. 4722.15.1 Krnyezet (*environment+)..............................................................................................................................472

A knyv tanfolyami felhasznlsa nem engedlyezett!

5

Sos Tibor soost@ IQJB.hu

1. Elmlet2.15.2 Konzol ([console]) ........................................................................................................................................... 474 2.15.3 Bngszs ....................................................................................................................................................... 477 2.15.4 Felhasznli informcik ................................................................................................................................ 478 2.15.5 DNS adatok lekrdezse ................................................................................................................................. 478

2.16 SQL adatelrs ........................................................................................................................... 4802.16.1 Microsoft Access ............................................................................................................................................. 480 2.16.2 Windows Search ............................................................................................................................................. 485

2.17 COM objektumok kezelse ......................................................................................................... 4872.17.1 A Windows shell kezelse ............................................................................................................................... 487 2.17.2 WScript osztly hasznlata ............................................................................................................................. 488 2.17.3 Alkalmazsok kezelse .................................................................................................................................... 490 2.17.3.1 Internet Explorer ..................................................................................................................................... 490 2.17.3.2 Microsoft Word ....................................................................................................................................... 492 2.17.3.3 Microsoft Excel ........................................................................................................................................ 493 2.17.4 Windows Update ............................................................................................................................................ 495

2.18 Esemnyvezrelt futtats ........................................................................................................... 4972.18.1 EngineEvent kezelse...................................................................................................................................... 497 2.18.2 ObjectEvent kezelse ...................................................................................................................................... 500 2.18.3 WMIEvent kezelse ........................................................................................................................................ 504

3.

Fggelkek ........................................................................................................................ 5103.1 OOP alapok .................................................................................................................................. 5113.1.1 Osztly (tpus) ................................................................................................................................................... 511 3.1.2 Pldny (objektum) ........................................................................................................................................... 511 3.1.3 Pldnyosts .................................................................................................................................................... 511 3.1.4 Metdusok s vltozk ..................................................................................................................................... 512 3.1.5 Pldnyvltoz, pldnymetdus ..................................................................................................................... 512 3.1.6 Statikus vltoz, statikus metdus ................................................................................................................... 512 3.1.7 Vltozk elrejtse ............................................................................................................................................. 512 3.1.8 Overloaded metdusok .................................................................................................................................... 513 3.1.9 rklds .......................................................................................................................................................... 513

3.2 Mi is az a .NET keretrendszer ........................................................................................................ 5143.2.1 Futtatkrnyezet (Common Language Runtime, CLR)...................................................................................... 514 3.2.2 Class Library (osztlyknyvtr) ......................................................................................................................... 514 3.2.3 Programnyelvek ................................................................................................................................................ 515 3.2.4 Programfordts ................................................................................................................................................ 515 3.2.5 Programfuttats ................................................................................................................................................ 515 3.2.6 Assemblyk (kdkszletek) ................................................................................................................................. 516 3.2.7 rtk- s referenciatpusok ............................................................................................................................... 516

3.3 A WMI ttekintse ....................................................................................................................... 5173.3.1 A WMI felptse .............................................................................................................................................. 517 3.3.2 A WMI objektummodellje ................................................................................................................................. 519 3.3.3 Smk ............................................................................................................................................................... 520 3.3.4 Nvterek ........................................................................................................................................................... 520 3.3.5 A legfontosabb providerek ............................................................................................................................... 521

3.4 COM-objektumok......................................................................................................................... 5233.4.1 Tpusknyvtrak ................................................................................................................................................ 523

3.5 Active Directory kezelse PowerShell 1.0-val ................................................................................ 5243.5.1 Mi is az ADSI? .................................................................................................................................................... 524 3.5.2 ADSI providerek ................................................................................................................................................ 524 3.5.3 Az ADSI gyorsttr ........................................................................................................................................... 525 3.5.4 Active Directory informcik lekrdezse ........................................................................................................ 525

A knyv tanfolyami felhasznlsa nem engedlyezett!

6

Sos Tibor soost@ IQJB.hu

1.1 Elsz a 2. kiadshoz3.5.5 Csatlakozs az Active Directory-hoz ..................................................................................................................526 3.5.6 AD objektumok ltrehozsa ..............................................................................................................................528 3.5.7 AD objektumok tulajdonsgainak kiolvassa, mdostsa ...............................................................................528 3.5.7.1 Munka tbbrtk (multivalued) attribtumokkal ...................................................................................533 3.5.7.2 Specilis tulajdonsgok kezelse ...............................................................................................................535 3.5.8 Jelsz megvltoztatsa ......................................................................................................................................535 3.5.9 Csoportok kezelse ...........................................................................................................................................536 3.5.10 Keress az AD-ben ...........................................................................................................................................536 3.5.10.1 Keress id tpus adatokra ....................................................................................................................539 3.5.10.2 Keress bitekre ........................................................................................................................................541 3.5.11 Objektumok trlse ........................................................................................................................................542 3.5.12 AD objektumok hozzfrsi listjnak kezelse..............................................................................................542 3.5.13 sszetett feladat ADSI mveletekkel ..............................................................................................................544

3.6 Hasznos linkek .............................................................................................................................. 5473.6.1 PowerShell 1.0 linkek ........................................................................................................................................547 3.6.2 PowerShell 2.0 linkek ........................................................................................................................................549

4.

Trgymutat...................................................................................................................... 555

A knyv tanfolyami felhasznlsa nem engedlyezett!

7

Sos Tibor soost@ IQJB.hu

1.1 Elsz a 2. kiadshoz

1. Elmlet1.1 Elsz a 2. kiadshozA Windows PowerShellnek immr a 2.0 verzija rhet el. Sokan a Microsoft szoftvereit nem hasznljk, amg azok csak az 1.0-s verzinl tartanak, megvrjk valamelyik magasabb verziszm vltozat megjelenst. Ez most a PowerShell esetben elkvetkezett, gy mr senki sem bjhat ki a tovbbiakban a hasznlata all! Azok szmra, akik mg nem tallkoztak vele, tisztzzuk, hogy mi is a PowerShell? A PowerShell a Microsoft automatizcis platformja, mellyel olyan feladatokat oldhatunk meg, amelyek ismtldek, vagy nagyszm elemre kell egyszerre alkalmazni, vagy amelyek megoldsra megfelel egyb eszkz nem ll rendelkezsre. A PowerShellel leginkbb karakteres parancsablakban tallkozhat(t)unk, de ez mr egyre inkbb a mlt, hiszen a 2.0-s verziban mr kapunk egy grafikus szkriptszerkeszt-futtat krnyezetet is, msrszt egyb gyrtk is knlnak mr rgebb ta ilyen kiegsztseket, gy ha valaki nem szereti a karakteres kpernyt, azok szmra is van megolds. De mindenkppen fontos szerintem a PowerShell megismerst azzal kezdeni, hogy ezt a karakteres-parancssoros krnyezetet dertsk fel, hiszen a filozfijnak nagyon sok vonatkozsa ezen keresztl rthet meg. A PowerShellt programozsi krnyezetnek is felfoghatjuk, meg programozsi nyelvnek is, hiszen minden eszkz rendelkezsnkre ll ahhoz, hogy akr komplett programokat is ksztsnk. Ezek a programok interpretltak, azaz futsidben rtelmezettek, gy olyan felhasznlsi terleteken hasznlhatjuk, ahol nem a sebessg a f szempont. A PowerShellt n, mint oktat egy nagyon j pedaggiai eszkznek is tekintem, hiszen segtsgvel nagyon gyorsan kzel lehet vinni brkihez, - aki egy picit is konyt s rdekldik a szmtgpekhez - a programozst, az objektum-orientltsgot, a .NET keretrendszert s a Windows belsejt. Ezrt nagyon rlnk s szvesen segtsget is nyjtank ahhoz, hogy a PowerShell bekerlhessen a kzoktatsba. Ha egy kicsit szabadabb, szubjektvebb megfogalmazst is megengednek, akkor hadd mondjam azt, hogy szerintem:

A Windows PowerShell egy univerzlis segdprogram-pt platform, amely segt kitrni a grafikus eszkzk korltai mgl.

Persze a PowerShell nagyon nagy tuds eszkz! Ahhoz, hogy ezt hatkonyan tudjuk hasznlni, termszetesen meg kell tanulni. Els lps az elmlet megrtse, megtanulsa. Ebben a knyvben a PowerShell elmletnek majdnem minden olyan porcikjt megprblom bemutatni egyszer pldkon keresztl, amelyre egy rendszergazdnak, rendszerzemeltetnek szksge lehet. A kvetkez lps a gyakorls! Gyakorls nlkl a PowerShellt nem lehet megtanulni! n prbltam, de nem sikerlt! Amikor gy reztem nhny knyv elolvassa utn, hogy rtem, tudom, s neki kellett fogni egy konkrt feladat megoldshoz, akkor dbbentem r, hogy nem is tudok semmit a PowerShellbl. Azaz pusztn a knyv

A knyv tanfolyami felhasznlsa nem engedlyezett!

9

Sos Tibor soost@ IQJB.hu

1. Elmletolvasgatsa, megtanulsa ehhez nem elg. Ez a knyv nem gyakorl fzet, nem is akar az lenni. Gyakorlsra tbb lehetsget tudok javasolni: az egyik eljnni hozzm tanfolyamra , ahol sok nll feladatot adok a tanulknak, amelyek megoldst kzsen megbeszljk. A msik, hogy tervezek kialaktani egy PowerShell felhasznlk klubja kzssget az interneten, ahol problmkat lehet felvetni, amelyekhez n, vagy ms PowerShell felhasznlk megprblnak megoldst adni. Ilyen megoldsok megalkotsval, vagy ilyen megoldsokat elemzsvel, tovbbfejlesztsvel lehet igazn gyakorolni, tanulni. Engedjenek meg mg pr szt a PowerShell klnbz verziirl. Az els s msodik verzi kztt az alapokat tekintve nagyon kevs a klnbsg. Taln ahhoz lehetne hasonltani ezt, mint egy aut alapkivitele s extrkkal teletzdelt vltozata kzti klnbsg. Azaz amit megszokhattunk az alapkivitelben (forma, ler, fbb kezelszervek) az mind ugyanott van, ugyanolyan a gazdagabb felszereltsgben is, de sok j knyelmi funkcival tallkozunk: automatikus, ktzns lgkondicionl, ngy kerk meghajts, tolatradar. Akik persze nem ismertk az els verzit, az alapkivitelt, azok szmra persze ezek a klnbsgek nem rzkelhetk, k mr a tutiba szlettek bele. Ezzel csak azt akarom szemlltetni, hogy nagyon j alapok lettek lerakva a PowerShell esetben, gy az j verzik megjelensvel nem kell jra megtanulni mindent, az elz verziban megtanult dolgok szinte 100%-ban hasznosulnak a kvetkezben is. s egy figyelmeztets! A PowerShell megtanulsa nem knny feladat. Nekem kb. egy vbe tellett, bzom benne, hogy ennek a knyvnek a birtokban a Tisztelt Olvasnak jval kevesebb idbe telik majd, de azrt ne gondoljk, hogy egy ht elg erre! De ne csggedjenek, vegyk a fradtsgot visszalapozni a knyvben, jra s jra kiprblni, az itteni pldkat s azokat alaktgatni, fejlesztgetni! Megri, mert ha tnyleg kszsg szinten elsajttjk a powershellezs kpessgt, akkor rengeteg sikerlmnyhez lehet jutni egy-egy eleinte bonyolultnak tn feladat tmr, elegns megoldsa sorn. Tovbbra is szvesen fogadom a knyvvel kapcsolatos visszajelzseket! Akr valami elgpelst, vagy nehezen rthet pldt tallnak, vagy javasolnnak valamit, ami mg illene egy ilyen jelleg knyvbe, krem, rjk meg! Szvesen elmegyek eladst, tanfolyamot tartani. A tanfolyam elvgzsvel mg inkbb lervidl az az id, ami alatt valaki eljut arra a szintre, hogy gyakorlati feladatokat is knnyedn megoldhasson. Szvesen segdkezek akr konzultcis formban konkrt feladatok megoldsban is, ha hvnak. J tanulst s sok sikerlmnyt!

Budapest, 2010. mrcius 7.

Sos Tibor [email protected] PowerShell MVP, MCT, MCITP

A knyv tanfolyami felhasznlsa nem engedlyezett!

10

Sos Tibor soost@ IQJB.hu

1.2 Kezdetek

1.2 Kezdetek1.2.1 A PowerShell teleptseA PowerShell 2.0 a Windows 7 s a Windows Server 2008 R2 rsze, de a Windows Management Framework1 rszeknt telepthet Windows XP SP3, Windows Server 2003 SP2 s ezeknl jabb opercis rendszerre. A telepts elfelttele a .NET Framework 2.0 meglte a gpen. Mind a PowerShell, mind a .NET Framework letlthet a Microsoft weboldalrl. A PowerShellt a Start men All Programs/Accessories/Windows PowerShell csoportjban tallhat Windows PowerShell parancsikon segtsgvel, vagy kzvetlenl a powershell.exe meghvsval indthatjuk. A 64 bites Windows-okon kt PowerShell ikonunk is lesz, egy 64 bites s egy 32 bites parancssori krnyezet indtsra:

1. bra PowerShell programcsoport ikonjai (64 bites) Tallhatunk itt mg egy (esetleg kett) PowerShell ISE parancsikont is, errl majd kicsit ksbb.

1.2.2 Indtsuk el a PowerShellt!A Windows PowerShell indtsa utn a rgi, megszokott Parancssorhoz (cmd.exe) hasonl fellet jelenik meg. Amint az albbi brn is lthat, ksrteties a hasonlsg, nem lesz itt baj, gondosan tartsuk magunktl tvol a dokumentcit s prblkozzunk btran.

1

Letlthet a http://support.microsoft.com/default.aspx/kb/968929 helyrl.

A knyv tanfolyami felhasznlsa nem engedlyezett!

11

Sos Tibor soost@ IQJB.hu

1. Elmlet

2. bra, A cmd.exe s a PowerShell Megjegyzs A knyvben szerepl kpernykpek s kimsolt szkriptek tbbsge Windows Server 2008 R2 verzin szlettek. Az esetleges nyomtats festktakarkossga okn az alaphelyzet szerinti sttkk httrkp eltti fehr betket kicserltem fehr httrkp eltti fekete betkre. Hogy knnyebben tudjak a pldaszkriptek soraira hivatkozni az alaphelyzet szerinti PS C:\Users\Administrator> promptot lecserltem [sorszm] PS C:\ promptra. gy a knyvben szerepl kpernykpek s pldaszkriptek formailag nem pont ugyanazt adjk, mint ha n kiprblja ezeket a sajt gpn. Kezdetnek prbljuk ki teht a megszokott parancsokat, vajon mit szl hozzjuk az j shell.[1] PS C:\> dir Directory: C:\ Mode ---d---d-r-d-r-d-r-d----a--LastWriteTime ------------2009.07.14. 5:20 2009.11.09. 21:23 2009.11.11. 22:22 2009.11.09. 21:15 2009.11.15. 12:35 2009.11.11. 0:32 Length Name ------ ---PerfLogs Program Files Program Files (x86) Users Windows 458 users.txt

Amint lthat, nem trtnt semmi meglep, kaptunk egy mappa- s fjllistt, nagyjbl a megszokott mdon. Eddig rendben, a nehezn tl is vagyunk, ez is csak egy parancssor. Prblkozzunk valami nehezebbel, rjuk be mondjuk a kvetkezt:[2] PS C:\> dir /s

A knyv tanfolyami felhasznlsa nem engedlyezett!

12

Sos Tibor soost@ IQJB.hu

1.2 KezdetekGet-ChildItem : Cannot find path 'C:\s' because it does not exist. At line:1 char:4 + dir help help NAME Get-Help SYNOPSIS Displays information about Windows PowerShell commands and concepts. SYNTAX Get-Help [-Full] [[-Name] ] [-Category ] [-Component ] [-Functionality ] [-Online] [-Path ] [-Ro le ] []

Hogy tovbb szaportsuk a nem ltez, de ennek ellenre jl mkd parancsok szmt, prbljuk ki a cd parancsot, majd krjk el az sglapjt is. Lthatjuk, hogy az igazi neve Set-Location, s termszetesen nemcsak a fjlrendszerben, hanem a regisztrcis adatbzisban, tanstvnytrban, stb. is remekl mkdik. Valjban a cd, s a tbbi nem ltez, de mkd parancs csupn egy alias2, egy becenv, lnv a megfelel PowerShell parancsra (lsd: Get-Alias), amelyek hivatalos neve cmdlet (ejtsd: kommandlet, magyarul parancsocska). A kvetkezkben felsorolunk a fenti parancsokkal kapcsolatos nhny egszen egyszer pldt, amelyek kztt rszben a rgi cmd parancsok megfelelit, rszben az j kpessgek demonstrcijt tallhatjuk. dir *.txt /sPS C:\> Get-ChildItem -Include *.txt -Recurse

A HKLM/Software g kilistzsa a registrybl.

2

A help s a man nem alias, hanem fggvny, de ennek a mi szempontunkbl most nincs jelentsge.A knyv tanfolyami felhasznlsa nem engedlyezett!

14

Sos Tibor soost@ IQJB.hu

1.2 KezdetekPS C:\> Get-ChildItem registry::HKLM/Software

dir *.exePS C:\> Get-ChildItem * -i *.exe

cd q:PS C:\> Set-Location q:

Jelenlegi pozci elmentse3.PS C:\> Push-Location

tlls a HKEY_CURRENT_USER gra a registryben.PS C:\> Set-Location HKCU:

Visszaugrs egy korbbi elmentett pozcira.PS C:\> Pop-Location

tlls a tanstvnytr meghajtra.PS C:\> Set-Location Cert:

Azrt volt nhny elg furcsa klsej parancs, igaz? Tanstvnytr meghajt!? Mi lesz mg itt? Ksrletezznk tovbb! Ha mr ilyen szpen tudjuk hasznlni a nem ltez parancsokat, prbljunk ki valami olyat, ami tnyleg biztosan nem ltezhet:PS C:\> 1 1

Semmi hibazenet, a PowerShell egyszeren visszarta a szmot a konzolra. A PowerShell ablakot bezrni az Exit paranccsal lehet, de ez nem PowerShell parancs, nem is alias, a help sem ad semmi tmpontot.

1.2.3 Hello World!Az elzekben a PowerShell sajt parancsaival s DOS-os lnevekkel ksrleteztnk, most kezdjnk el alkotni, sajt programot rni! Bjarne Stroustrup ta, azt hiszem, minden programozssal foglalkoz knyv azzal kezddik, hogy olyan programot runk, amelyik kirja a kpernyre, hogy Hello world!. Nzzk meg, hogy ez hogyan megy PowerShellben:

3

Ahogyan a nv sugallja, tbb pozci is elmenthet egyms tetejre, vagyis egy verembe. A Pop-Location mindig a legfell lvre tr vissza, majd eldobja azt.

A knyv tanfolyami felhasznlsa nem engedlyezett!

15

Sos Tibor soost@ IQJB.hu

1. Elmlet

3. bra Els PowerShell programom Nagyon egyszer, idzjelek kzt berjuk a szveget, Enter, s mr ki is rta. Ennl egyszerbben nem is lehetne ezt!

1.2.4 DOS parancsok vgrehajtsaLttuk, hogy a Dir parancs lefutott, de knny neki, hiszen a Dir egy PowerShell parancs lnven. De vajon a tbbi DOS paranccsal mi trtnik? Azokkal is nyugodtan prblkozzunk! Pldul prbljuk ki az IPConfig parancsot:

4. bra IPConfig a PowerShell ablakban Ez is lefutott, az ipconfig ugyangy mkdik, mint a DOS ablakban. Ehhez hasonlan a tbbi DOS parancsot is nyugodtan kiprblhatjuk, azaz akr teljes egszben ttrhetnk a PowerShell krnyezet hasznlatra, akr a nem PowerShell parancsok futtatsval is. (Persze vatosan, nem biztos hogy minden korbbi DOS-os batch fjlunk le fog futni.)

1.2.5 Gyorsbillentyk, belltsokNagyban meggyorstja munknkat, ha ismerjk azokat a gyorsbillentyket, amelyek elrhetek a PowerShell ablakban: TAB Shift + TAB Automatikus kiegszts, tovbbi TAB tovbbi tallatokat ad Visszalp az elz tallatra

A knyv tanfolyami felhasznlsa nem engedlyezett!

16

Sos Tibor soost@ IQJB.hu

1.2 KezdetekF1 F2 F3 vagy F4 F5 vagy F6 F7 F8 F9 Jobbkattints Egrrel kijell + Enter ESC 1 karakter a trtnet-trbl Bert karakterig msol Elz parancs a trtnet-trbl Kurzortl az adott karakterig trl Lpked vissza a trtnet-trbl hatstalan Trtnettrat megjelenti Parancstrtnet, de csak a mr begpelt szvegre illeszkedeket Bekri a trtnettr adott elemnek szmt s futtatja Beilleszts Msols Karaktert lpked, res sorban a parancstrtnet-trbl hv el karaktereket Karaktert lpked Trli az aktulis parancssort

Tovbb gyorstja a munknkat, ha a PowerShell ablak nhny belltsra is odafigyelnk. Ha jobb egrgombbal kattintunk az ablak bal fels sarkban lev PowerShell ikonra ( jelenik meg: ), akkor a kvetkez men

5. bra A PowerShell ablak menje Itt minket a Properties menpont rdekel, kattintsunk r. A megjelen prbeszdpanelben van nhny fontos, munknkat segt belltsi lehetsg: Az Options fln a QuickEdit Mode fontos, hogy be legyen kapcsolva. Ennek birtokban tudjuk az egrrel kijellni a konzolon megjelen szvegeket s Enter letsvel a vglapra helyezni. Szintn ez kell ahhoz, hogy a vglapra valahonnan kimsolt szveget a jobb egrgombbal beilleszthessk a kurzor pozcijtl kezdden.

A knyv tanfolyami felhasznlsa nem engedlyezett!

17

Sos Tibor soost@ IQJB.hu

1. Elmlet

6. bra Options fl A Font fln llthatunk be az ignyeinknek s szemnknek esetleg jobban megfelel bettpust s mretet. A Layout fln lehet optimlisabb ablakmretet belltani. Ez fleg az ablak szlessge szempontjbl fontos, mert majd ltni fogjuk, hogy a PowerShell parancsok kimenete nagyon gyakran tblzat jelleg, s annak jobb, ha minl szlesebb ablakban tudjuk megjelenteni.

7. bra Az ablak mretnek belltsa Jelen knyvbe msolt konzoltartalmak miatt n az ablakmretemet levettem 79 karakterre, mert ez pont mg megfelel fontmrettel beilleszthet a knyv lapjaira, de igazi munkban, amikor j nagy felbonts monitort hasznlunk, akkor ezt rdemes akr 150 karakterre megnvelni. Szintn praktikus, ha a lthat ablak szlessge s a mgtte lev Screen Buffer szlessge egyforma, mert akkor nem lesz vzszintes grdt svunk, ami j, ha nincs. Ezzel szemben a fggleges puffer-mret lehet j nagy, hogy hosszabb listk is gond nlkl teljes terjedelmkkel kifrjenek, s fggleges grdtssel megtekinthetek legyenek. Az utols fl a sznek belltsra val. Alaphelyzetben mlykk alapon fehr betkkel nylik meg a PowerShell ablak. Ha valaki knyvet r, s a kpernykpek nyomtatsra kerlnek, akkor rdemes festkkmls cljbl inkbb fehr alapon fekete betket hasznlni, ezt tettem n is.

A knyv tanfolyami felhasznlsa nem engedlyezett!

18

Sos Tibor soost@ IQJB.hu

1.2 KezdetekHa testre szabtuk az ablakot, akkor a prbeszdpanel bezrskor rkrdez a fellet, hogy ezeket a belltsok csak az adott ablakra vonatkozzanak, vagy legkzelebb is viszont akarjuk ltni a vltoztatsainkat, ha jra megnyitjuk a Start menbl a PowerShell ablakot. rdemes ez utbbi opcival elmenteni vltoztatsainkat kiprbls utn.

1.2.6 A TAB-billentyAz egyik legtbbet hasznlt gyorsbillenty a TAB-billenty, amit rdemes kicsit rszletesebben is trgyalni, mivel ez rengeteg flsleges gpelstl mentheti meg a lustbb (ez hatrozottan pozitv tulajdonsg) szkriptelket. A PowerShell TAB-billentyje annyira sokrten hasznlhat, hogy akr olyan informciforrsknt is tekinthetnk r, ami gyorsan, knnyen elrhet s mindig kznl van. A TAB hasznlata nem igazi jdonsg, nyilvn sokan hasznltk a cmd.exe-be ptett vltozatt, de a PowerShellben szmos j kpessggel is tallkozhatunk. Mi a teend pldul, ha t akarunk vltani a C:\Users mappra? Termszetesen begpelhetjk a teljes parancsot:PS C:\> Set-Location "c:\Users"

Nem is olyan sok ez. Akinek mgis, az csak ennyit rjon:PS C:\> Set-Location c:\U

Ha a c: meghajt gykerben nincs ms u betvel kezdd mappa, akkor kszen is vagyunk, a shell kiegsztette a parancsot, mg az idzjeleket is begpelte helyettnk. Ha tbb mappa is kezddik u-val akkor sincs nagy baj, a TAB-billenty szorgalmas nyomkodsval elbb-utbb eljutunk a megfelel eredmnyig. Mg ez is tl sok? Prblkozzunk tovbb! A PowerShell nemcsak a mappa s fjlneveket, hanem a cmdletek nevt is kitallja helyettnk:PS C:\> Set-L c:\u

Mi trtnik vajon, ha csak ezt gpeljk be:PS C:\> Set-

Bizony, a TAB-billenty nyomkodsval vgiglpkednk az sszes Set- parancson, gy akkor is knnyen kivlaszthatjuk a megfelelt, ha a pontos nv ppen nem jut esznkbe. A Shift+TAB-bal vissza tudunk lpni az elz tallatra, ha tl gyorsan nyomkodva esetleg tovbb lptnk, mint kellett volna. Mi a helyzet a cmdletek paramtereivel? Gpeljk be a kvetkezt:PS C:\> Get-ChildItem -

Taln mr nem is meglep, hogy a lehetsges paramterek listjn is vgiglpkedhetnk, hogy a megfelelt knnyebben kivlaszthassuk kzlk. A paramterek megadsval kapcsolatban itt emltnk meg egy msik lehetsget is (br nem kell hozz TAB). Egyszeren annyi a teendnk, hogy egyltaln nem adunk meg paramtert, mivel ebben az esetben a parancs indtsa eltt a PowerShell szp sorban bekri a ktelez paramtereket:

A knyv tanfolyami felhasznlsa nem engedlyezett!

19

Sos Tibor soost@ IQJB.hu

1. ElmletPS C:\> New-Alias Supply values for the following parameters: Name: ga Value: Get-Alias

Hamarosan rszletesen megismerkednk a PowerShell vltozk rejtelmeivel s az objektumok hasznlatval, most csak egy kis elzetes kvetkezik a TAB-billenty kapcsn. Ha a PowerShell munkamenetben sajt vltozkat definilunk, a TAB ezek nevnek kiegsztsre is kpes, amint az albbi pldn lthat:PS C:\> $ezegynagyonhosszunevuvaltozo = 1 PS C:\> $ez

gyes! s mi a helyzet a .NET vagy COM-objektumok tulajdonsgaival s metdusaival? A TAB-billenty ebben az esetben is kszsgesen segt:PS PS PS PS C:\> C:\> C:\> C:\> $s = "hell" $s. $excel = new-object -comobject excel.application $excel.

Aki mg arra is kvncsi, hogy ezt a sok okossgot mi vgzi el helyettnk, adja ki a kvetkez parancsot:PS C:\> $function:tabexpansion

A kpernyn a PowerShell beptett TabExpansion nev fggvnynek kdja jelenik meg; ez fut le a TAB-billenty minden egyes letsekor. A kd most mg taln egy kicsit ijesztnek tnhet, de hamarosan mindenki folykonyan fog olvasni PowerShelll. A kd azonban nemcsak olvasgatsra j, meg is vltoztathatjuk azt, st akr egy teljesen j, sajt fggvnyt is rhatunk a gyri darab helyett (a fggvnyekrl ksbb termszetesen mg lesz sz).

1.2.7 Promptok, beviteli sorLthat, hogy a PowerShell is a parancssorok elejn, amikor tlnk vr valamilyen adatbevitelt, akkor egy kis jelz karaktersorozatot, un. promptot r ki. Ez alaphelyzetben gy nz ki:PS alaphelyzet szerinti knytr elrsi tja>

Az alaphelyzet szerinti knyvtr nagy valsznsggel a Users\felhasznlnv knyvtrra mutat. Ez a prompt testre szabhat. Itt ebben a knyvben sok helyen ilyen mdostott prompt lthat a pldimnl:[1] PS C:\>

Ahogy korbban emltettem, a PS el biggyesztettem egy nvekv szmot szgletes zrjelek kztt, hogy jobban tudjak hivatkozni az egyes sorokra a magyarz szvegben. A prompt tbbszint, viszont csak 1 szint mlysgig jelzi a >> jellel az alapszinttl eltr mlysget, ennl mlyebb szintekre nincs kln specilis prompt:

A knyv tanfolyami felhasznlsa nem engedlyezett!

20

Sos Tibor soost@ IQJB.hu

1.2 Kezdetek

8. bra Tbbszint prompt Ha rzi, hogy kell mg folytatdnia a sornak, mert idzjel szerepel a sor elejn, vagy valamilyen nyit zrjel, akkor >> lesz a prompt. Ha mr ki akarunk szllni a mlyebb szint promptbl, akkor azt egy res sorban lettt Enterrel tehetjk meg. Ha egy hosszabb sort inkbb kln sorba szeretnnk tenni, a visszafeleaposztrf (` - AltGr 7) hasznlatos:

9. bra Sortrs Escape (`) karakter utn Ez az un. Escape karakter, ami hatstalantja a kvetkez specilis karakter (itt pl. az Enter) hatst. Amgy nyugodtan folytatdhat a parancssorunk a kvetkez sorban, ha tl hossz. Ha tbb utastst szeretnnk egy sorba berni, akkor a ; karakterrel tudjuk azokat elvlasztani.[1] PS C:\> "Els utasts"; 1+3; "Vge" Els utasts 4 Vge

1.2.8 ParancstrtnetA PowerShell ablak megjegyzi a korbban begpelt parancssorainkat. Ezt a parancstrtnet-trat az F7 billentyvel tudjuk megjelenteni. Vigyzat! Ktfajta trtnet-sorszmozs van:

A knyv tanfolyami felhasznlsa nem engedlyezett!

21

Sos Tibor soost@ IQJB.hu

1. Elmlet

10. bra A PowerShell parancstrtnet-tr Az F7-re megjelen trtnettrban minden tnyleges sor (alpromptok is) kln vannak nyilvntartva. Van azonban egy PowerShell cmdletnk is, a get-history, amiben fpromptonknt kapunk j sorszmot. Radsul a trtnettrbl elhvott parancsok esetben a sorszmok msknt viselkednek a ktfajta elhvs sorn. Az albbi bra azt demonstrlja, hogy elhvtam a 3. parancsot a trtnettrbl. Az F7-es trtnettr ezek utn ezt a parancsot nem jelenti meg jra, azt mutatja, hogy ezt a 3. parancsot egyszer hajtottam vgre. Ezzel szemben a get-history kirta, mint 5. vgrehajtst:

11. bra A megismtelt parancsok nem jelennek meg a trtnettrban A felugr parancstrtnetbl Enterrel lehet vgrehajtatni a kijellt korbbi parancsot, de gyakran arra van szksgnk, hogy egy rgebbi parancsot kicsit mdostva hajtsuk jra vgre. Ekkor ne Entert, hanem a jobbnyl billentyt nyomjuk meg.

A knyv tanfolyami felhasznlsa nem engedlyezett!

22

Sos Tibor soost@ IQJB.hu

1.2 Kezdetek

1.2.9 A PowerShell, mint szmolgpA PowerShell alaphelyzetben szmolgpknt is mkdik:

12. bra Szmolsi mveletek a PowerShell ablakban Ltszik a fenti brn, hogy tmogatja az alapmveleteket s a leggyakoribb szmtstechnikban elfordul mrtkegysgeket: kb, mb, gb, tb. Ezeket szmmal egyberva kell hasznlni, klnben hibajelzst kapunk. A % a maradkos osztst vgzi.

1.2.10 A konzol trlseHa mr jl telertuk a PowerShell ablakot, s szeretnnk, ha res lenne jra, akkor futtassuk a ClearHost cmdletet. Ennek van kt gyakran hasznlt lneve is: cls, clear.

1.2.11 Kis-nagybetA PowerShell a legtbb esetben nem klnbzteti meg a kis- s nagybetket. A parancsokat, kifejezseket akr kis, akr nagybetkkel berhatjuk. De mg az ltalunk ltrehozott vltoznevek tekintetben is figyelmen kvl hagyja ezt:[2] PS I:\>$kis = 1 [3] PS I:\>$KIS 1 [4] PS I:\>get-command get-help CommandType ----------Cmdlet Name ---Get-Help Definition ---------Get-Help [[-Name] ...

[5] PS I:\>GET-COMMAND get-HELP CommandType ----------Cmdlet Name ---Get-Help Definition ---------Get-Help [[-Name] ...

A knyv tanfolyami felhasznlsa nem engedlyezett!

23

Sos Tibor soost@ IQJB.hu

1. ElmletAz sszehasonltsoknl sincs alaphelyzetben szerepe a bet mretnek, termszetesen itt majd ezt az alapmkdst fellbrlhatjuk, hogy a kis-nagybetket tekintse klnbznek:[6] PS I:\>"alaphelyzet" -eq "ALAPHELYZET" True [7] PS I:\>"kis-nagybet rzkeny" -ceq "kis-NAGYbet rZKeNy" False

A fenti pldban az alaphelyzet szerinti egyenlsget vizsgl opertor nem kis-nagybet rzkeny, ha rzkeny vltozatot szeretnnk hasznlni, akkor az a c eltaggal (azaz a case-sensitive) kln jelezni kell. Az sszehasonlts mveletrl az 1.5 Opertorok fejezetben lehet bvebben olvasni.

1.2.12 A grafikus PowerShell fellet Integrated Scripting EnvironmentNagyon sok esetben elg neknk a karakter alap konzolablak, de tbbsoros szkriptek rshoz azrt mg mindig jobb valami grafikus szkriptszerkeszt. Eddig csak kls gyrtktl juthattunk ilyenhez, most a PowerShell 2.0-s verzijban mr kapunk egyet beptetten is. A Windows PowerShell ISE parancsikonnal indthat a grafikus szerkesztfellet:

13. bra A PowerShell ISE Amint az brn is lthat, hrom ablakrszbl ll ssze a fellet: a legfls flekkel lapozhat mdon tartalmazza az ltalunk begpelt vagy fjlbl betlttt szkriptjeinket. A kzps rszben kapjuk meg a szkriptjeink s parancsaink futtatsnak kimenett, a legals ablakrszbe kzvetlenl gpelhetnk parancsokat s az Enter lenyomsra ezek azonnal vgrehajtdnak.

A knyv tanfolyami felhasznlsa nem engedlyezett!

24

Sos Tibor soost@ IQJB.hu

1.2 KezdetekEz a program kicsit mskpp mkdik akkor, ha amit a legfels rszbe runk mg nem mentettk el. Ilyenkor az eszkzsori futtats (Run Script) gomb megnyomsra az egsz ltalunk begpelt szkript gy hajtdik vgre, mintha alulra gpeltk volna be.

14. bra Elmentetlen szkript futtatsa Ha elmentettk a szkriptet, akkor csak a szkript meghvsa lthat a kimeneti ablakban, az egyes sorokat nem kapjuk vissza.

15. bra Elmentett szkript futtatsa

A knyv tanfolyami felhasznlsa nem engedlyezett!

25

Sos Tibor soost@ IQJB.hu

1. ElmletNagyon praktikus, fleg a szkriptjeink tesztelsi fzisban, hogy lehetsg van csak a kijellt szkriptrszek futtatsra is az eszkzsor Run Selection gombjval.

Kijells futtatsa

16. bra A kijellt szkriptrsz futtatsa

A knyv tanfolyami felhasznlsa nem engedlyezett!

26

Sos Tibor soost@ IQJB.hu

1.3 Alapfogalmak

1.3 AlapfogalmakMi is a PowerShell? A Microsoft legjabb defincija szerint a PowerShell a rendszergazda tevkenysgek automatizcis platformja. Ketts szerepe van: egyrszt a PowerShell egy parancssori krnyezet, azaz egy olyan program, ahol a felhasznl kapcsolatba lphet a szmtgpes rendszerrel (direkt nem korltozva le az opercis rendszerre!). Ebbl a szempontbl sok olyan szolgltatst kell nyjtania, ami a gyors, knyelmes adatbevitelt, azaz a gyors gpelst szolglja. Msrszt a PowerShell egy programnyelv is, mint ilyennek rendelkeznie kell azokkal a programrshoz szksges elemekkel, mint pldul a ciklus, vltozk, fggvnyek, adatszerkezetek. A PowerShell mindkt szempontot prblja a lehet legjobban kielgteni, tmaszkodik ms, elssorban a Unix s Linux klnbz shelljeire s onnan tveszi a legjobb megoldsokat. De termszetesen ez egy Windowsos shell, teht nem prbl kompatibilis lenni a Unixos shellekkel, hanem inkbb a Windows adottsgaihoz s lehetsgeihez alkalmazkodik, ezen bell is a .NET Framework a legfontosabb alapja. Ellenttben a CMD shellel, a PowerShell nmagban is nagyon sok parancsot tartalmaz. Pldul CMD shellben a fjlok msolst a copy.com vgzi, maga a parancssori krnyezet nem tud fjlt msolni. Ezzel szemben a PowerShellnek van egy copy-item parancsa, un. cmdlet-je, amellyel lehet fjlt (de nem csak fjlt!) msolni.

1.3.1 ArchitektraA PowerShell teht a .NET Frameworkre pl, a PowerShellhez a 2.0-s .NET Framework szksges, de a PowerShell ISE futtatshoz szksges a .NET 3.51 kiegszt csomag is. Ez a rpls szmos elnnyel jr, fleg ha azt is tudjuk, hogy a PowerShell objektumokkal dolgozik. Pl. a dir parancsot futtatva nem egyszeren egy karaktersorozatot kapunk vissza vlaszknt, hanem a fjlok, alknyvtrak objektumainak halmazt, un. collection-t, gyjtemnyt. Teht kt megjegyzend fogalom: OBJEKTUM, GYJTEMNY! Mi az, hogy objektum? Olyan kpzdmny, amely tulajdonsgokkal (property) s meghvhat metdusokkal (method) rendelkezik. A hagyomnyos shellek (command.com, cmd.exe, bash, stb.) mindegyikt karakterlnc-orientltnak nevezhetjk; a parancsok bemenete s kimenete (nhny specilis esetet nem szmtva) karakterlncokbl ll. Pldul a cmd.exe esetn a dir parancs kimenete valban s pontosan az a fjl- s mappalistt ler karaktersorozat, amely a kpernyn megjelenik, se tbb, se kevesebb. Ez bizonyos szempontbl j, hiszen gy azt ltjuk, amit kapunk. Msrszrl viszont csak azt kapjuk, amit ltunk, ez pedig sajnos nem tl sok. A PowerShell adatkezelse azonban alapjaiban klnbzik ettl; az egyes parancsok bemenete s kimenete is .NET osztlyokon alapul objektumokbl (objektumreferencikbl) ll, vagyis a kirtakon kvl tartalmazza a .NET objektum szmtalan egyb tulajdonsgt is. Amint lthattuk, a dir parancs kimenete itt is a kpernyre kirt fjl s mappalistnak tnik, de ez csak egyszer rzki csalds, a kimenet valjban egy System.IO.DirectoryInfo s System.IO.FileInfo osztly objektumokbl ll gyjtemny. Mivel azonban az objektumok nem alkalmasak emberi fogyasztsra, kpernyn val megjelentsk termszetesen szveges formban, legfontosabb (illetve kivlasztott) jellemzik felsorolsval trtnik. A fentiekbl nyilvnvalan kvetkezik az objektumorientlt megkzelts kt fontos elnye; egyrszt a parancsok kimenete rengeteg informcit tartalmaz, amelyeket szksg esetn felhasznlhatunk, msrszt nincs szksg szvegfeldolgoz parancsok s eszkzk hasznlatra, ha a kimenetknt kapott adathalmazbl

A knyv tanfolyami felhasznlsa nem engedlyezett!

27

Sos Tibor soost@ IQJB.hu

1. Elmletcsak egy meghatrozott informcidarabra van szksgnk, mivel minden egyes adatmez egyszeren a nevre val hivatkozssal, nllan is lekrdezhet. Kpzeljk el pldul, hogy a dir parancs ltal produklt fenti listbl szvegfeldolgoz parancsokkal kell kivlasztanunk azokat a fjlokat (mappkat nem), amelyek 2007. prilis 12-e utn mdosultak. Jaj. Persze megoldhat a feladat, de helyesen fog lefutni az a szkript egy nmet nyelv Windowson is? (s akkor pldul a knai nyelv rendszerekrl mg nem is beszltnk.) Ha viszont a kimenet objektumokbl ll, akkor termszetesen egyltaln nincs szksg a megjelen szveg feldolgozsra, mert minden egyes objektum tudja magrl, hogy fjl, vagy mappa, s az opercis rendszer nyelvtl fggetlenl, DateTime objektumknt adja vissza az utols mdostsnak idejt. Most egyelre - klnsebb magyarzat nlkl - nzzk, hogy egy fjl milyen objektumjellemzkkel, tagjellemzkkel (member) br, a get-member cmdlet futtatsval:[2] PS C:\> get-item szamok.txt | get-member TypeName: System.IO.FileInfo Name ---AppendText CopyTo Create ... Delete ... MoveTo ... Attributes CreationTime CreationTimeUtc Directory DirectoryName Exists Extension FullName IsReadOnly LastAccessTime LastAccessTimeUtc LastWriteTime LastWriteTimeUtc Length Name BaseName Mode ReparsePoint MemberType ---------Method Method Method Method Method Property Property Property Property Property Property Property Property Property Property Property Property Property Property Property ScriptProperty ScriptProperty ScriptProperty Definition ---------System.IO.StreamWriter AppendTe... System.IO.FileInfo CopyTo(Strin... System.IO.FileStream Create() System.Void Delete() System.Void MoveTo(String destF... System.IO.FileAttributes Attrib... System.DateTime CreationTime {g... System.DateTime CreationTimeUtc... System.IO.DirectoryInfo Directo... System.String DirectoryName {get;} System.Boolean Exists {get;} System.String Extension {get;} System.String FullName {get;} System.Boolean IsReadOnly {get;... System.DateTime LastAccessTime ... System.DateTime LastAccessTimeU... System.DateTime LastWriteTime {... System.DateTime LastWriteTimeUt... System.Int64 Length {get;} System.String Name {get;} System.Object BaseName {get=[Sy... System.Object Mode {get=$catr =... System.Object ReparsePoint {get...

Mint ahogy egy fjltl elvrhatjuk, msolhatjuk (CopyTo), trlhetjk (Delete) s egy csom jellemzjt kiolvashatjuk: utols hozzfrs idejt (LastAccessTime) s hosszt (Length). Azaz ezekhez a tevkenysgekhez nem kell kls program, mg csak kln PowerShell parancs sem, maga az objektum tudja ezeket. Pl. a trls:[3] PS C:\> (get-item szamok.txt).Delete()

A knyv tanfolyami felhasznlsa nem engedlyezett!

28

Sos Tibor soost@ IQJB.hu

1.3 AlapfogalmakVisszatrve pl. a dir parancs futtatsra, ltalban egy knyvtrban nem egy fjl vagy alknyvtr van, hanem tbb. Ebben az esetben a PowerShell a parancs vgrehajtsa sorn egy un. collection-t, azaz egy objektumhalmazt, objektumgyjtemnyt vagy ms kifejezssel objektumtmbt kapunk vissza. Ennek a halmaznak radsul nem felttlenl kell egyforma tpus elemekbl llnia, mint ahogy egy knyvtrban is lehetnek fjlok is s alknyvtrak is. A PowerShell az ilyen collection-k, azaz gyjtemnyek feldolgozsra nagyon sok praktikus, nyelvi szint tmogatst ad, amit a ksbbiekben ltni fogunk.

1.3.2 Command s cmdletA PowerShellben a parancsokat cmdlet-nek (kommandlet) hvjuk. Hogy mirt? Valszn megklnbztetsl a DOS-os parancsoktl, amelyek sok esetben valjban kls programok meghvst jelentik (pl.: netsh netsh.exe, attrib attrib.exe). Lnyeg, hogy a cmdletek a PowerShell sajtjai, egysges szerkezetet alkotnak ige-fnv formban. Ezeket a get-command cmdlettel ki is listzhatjuk:[1] PS C:\> Get-Command CommandType ----------Alias Alias Function Alias Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Cmdlet Alias Function Function Alias Alias Function Function Alias Cmdlet Alias Name ---% ? A: ac Add-Computer Add-Content Add-History Add-Member Add-PSSnapin Add-Type asnp B: C: cat cd cd.. cd\ chdir Checkpoint-Computer clc Definition ---------ForEach-Object Where-Object Set-Location A: Add-Content Add-Computer [-DomainName] ... Add-Content [-Path] "Hell".Replace('e', 'a') Hall

Alaktsuk t a karakterlncot csupa nagybetss:PS C:\> "Hell".ToUpper() HELL

Szmoljuk meg a karakterlnc betit (nem metdus, hanem tulajdonsg, gy nem kell zrjel):PS C:\> "Hell".Length 5

A Get-Member lehet a segtsgnkre akkor is, ha egy adott cmdlet kimenett szeretnnk kzelebbrl megvizsglni, megmondja milyen tpus objektumokbl ll a kimenet, s azoknak milyen tulajdonsgai, metdusai vannak. Ha a kimenet nem egyetlen objektum, hanem gyjtemny (legtbbszr ez a helyzet), akkor abban akr tbb klnbz tpus objektum is elfordulhat, de a Get-Member ebben az esetben sem jn zavarba; a gyjtemnyben lv valamennyi tpust kilistzza. A mappkra kiadott Get-ChildItem pldul szoksosan FileInfo s DirectoryInfo objektumokat is tartalmaz, ekkor a Get-Member kimenetben mindkt tpus megtallhat.PS C:\> Get-ChildItem | Get-Member TypeName: System.IO.DirectoryInfo Name MemberType ------------Create Method CreateObjRef Method ... TypeName: System.IO.FileInfo Definition ---------System.Void Create(), System.V... System.Runtime.Remoting.ObjRef...

A knyv tanfolyami felhasznlsa nem engedlyezett!

36

Sos Tibor soost@ IQJB.hu

1.3 Alapfogalmak

Name ---AppendText CopyTo ...

MemberType ---------Method Method

Definition ---------System.IO.StreamWriter AppendT... System.IO.FileInfo CopyTo(Stri...

A .NET objektumokkal, metdusokkal, tulajdonsgokkal s adattpusokkal kapcsolatos informcit a .NET Framework SDK dokumentcijbl kaphatunk, itt igen rszletes lerst tallhatunk valamennyi osztly valamennyi elemvel kapcsolatban. Egyszerbb esetben azonban nem rdemes a rettenetes mennyisg informci kztti keresglssel sokkolni magunkat, nmi segtsg kzvetlenl a PowerShellbl is hozzfrhet az albbi mdszer hasznlatval (egy karakterlnc objektumra meghvhat Replace() metdus defincijt krjk le, a kimenetben lthat a visszaadott rtk, s a lehetsges paramterlistk):[28] PS C:\> ("Hell" | Get-Member replace).definition string Replace(char oldChar, char newChar), string Replace(string oldValue, st ring newValue)

Ugyanez (legalbbis az eleje) persze megjelenik egy kznsges Get-Member hvs kimenetben is (Definition oszlop), de ott a szks hely miatt a hosszabb szvegek vge ltalban mr nem lthat.

1.3.7 Alias, becenv, lnvAhogy a fejezet bevezetjben emltettem, a PowerShell ketts clt szolgl: j shell s j programnyelv prbl lenni. A j shellre az jellemz, hogy knyelmes, knnyen kezelhet, keveset kell gpelni, fl szavakbl is megrti a felhasznlt. Ennek eszkze a nhny betbl ll alias (becenevek, lnevek, szinonimk) hasznlatnak lehetsge. lnevet kapcsolhatunk (akr tbbet is) klnbz PowerShell elemekhez. Az alias brmilyen parancsban, kifejezsben teljes rtk helyettestje gazdjnak, gy nincs szksg az eredeti nv begpelsre. Az lnevek termszetesen szkriptekben is korltozs nlkl hasznlhatk, de alkalmazsuk jelentsen ronthatja a szkript olvashatsgt4. lnevet a kvetkez elemekhez rendelhetnk: PowerShell fggvnyek PowerShell szkriptek Fjlok Brmilyen vgrehajthat llomny (exe, com, cmd, vbs, stb.)

A PowerShell szmos beptett lnvvel is rendelkezik, ezek kzl nhnnyal (dir, cd, stb.) mr a korbbi fejezetekben is tallkozhattunk. Az lnevek teljes listjt a Get-Alias cmdlet jelenti meg:PS C:\> Get-Alias CommandType ----------Alias Alias4

Name ---ac asnp

Definition ---------Add-Content Add-PSSnapin

Ugyancsak a jobb olvashatsg miatt nem nagyon hasznlunk aliasokat a knyvben szerepl mintapldkban s szkriptekben sem.

A knyv tanfolyami felhasznlsa nem engedlyezett!

37

Sos Tibor soost@ IQJB.hu

1. ElmletAlias Alias Alias Alias ... clc cli clp clv Clear-Content Clear-Item Clear-ItemProperty Clear-Variable

Rendelkezsnkre ll tovbb az Alias: meghajt is, amely egy ms mdon teszi hozzfrhetv a beceneveket:PS C:\> Set-Location alias: PS Alias:\> Get-ChildItem

Ha nem a teljes listra, hanem csak egy konkrt aliasra vagy