powershell 2.0 10402.pdf /10400/10402/10402.pdf
TRANSCRIPT
-
Sos Tibor
Microsoft PowerShell 2.0 rendszergazdknak 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
1
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
Tartalomjegyzk 1. Elmlet ...................................................................................................................................... 9
1.1 Elsz a 2. kiadshoz ........................................................................................................................ 9
1.2 Kezdetek ........................................................................................................................................ 11 1.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 ................................................................................................................................. 27 1.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 .......................................................................................................................................... 66 1.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
-
1. Elmlet
2
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
1.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 .................................................................................................................................. 120 1.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 ........................................................................................................................ 167 1.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
-
1.1 Elsz a 2. kiadshoz
3
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
1.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 .................................................................................................................................. 178 1.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 ...................................................................................................................................... 206 1.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 ..................................................................................................................... 223 1.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
-
1. Elmlet
4
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
1.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 ........................................................................................................................... 265
2.1 PowerShell krnyezet ................................................................................................................... 265 2.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 .......................................................................................................................... 298 2.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 .................................................................................................................................. 306 2.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 ............................................................................................. 341 2.4.1 Az els fejlett fggvnyem ................................................................................................................................ 341 2.4.2 Paramterek ellenrzse .................................................................................................................................. 345 2.4.3 Cselemek kezelse .......................................................................................................................................... 347
-
1.1 Elsz a 2. kiadshoz
5
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
2.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 .................................................................................................................................... 370 2.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 ...................................................................................................... 388 2.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 .......................................................................................................................... 399 2.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 .................................................................................... 413 2.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 (Set-WMIInstance, 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 ........................................................................................................... 438 2.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 .............................................................................................. 472 2.15.1 Krnyezet (*environment+).............................................................................................................................. 472
-
1. Elmlet
6
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
2.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 ........................................................................................................................... 480 2.16.1 Microsoft Access ............................................................................................................................................. 480 2.16.2 Windows Search ............................................................................................................................................. 485
2.17 COM objektumok kezelse ......................................................................................................... 487 2.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 ........................................................................................................... 497 2.18.1 EngineEvent kezelse...................................................................................................................................... 497 2.18.2 ObjectEvent kezelse ...................................................................................................................................... 500 2.18.3 WMIEvent kezelse ........................................................................................................................................ 504
3. Fggelkek ........................................................................................................................ 510
3.1 OOP alapok .................................................................................................................................. 511 3.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 ........................................................................................................ 514 3.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 ....................................................................................................................... 517 3.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 ......................................................................................................................... 523 3.4.1 Tpusknyvtrak ................................................................................................................................................ 523
3.5 Active Directory kezelse PowerShell 1.0-val ................................................................................ 524 3.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
-
1.1 Elsz a 2. kiadshoz
7
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
3.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 .............................................................................................................................. 547 3.6.1 PowerShell 1.0 linkek ........................................................................................................................................ 547 3.6.2 PowerShell 2.0 linkek ........................................................................................................................................ 549
4. Trgymutat ...................................................................................................................... 555
-
1.1 Elsz a 2. kiadshoz
9
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
1. Elmlet
1.1 Elsz a 2. kiadshoz
A 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:
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 Windows PowerShell egy univerzlis segdprogram-pt
platform, amely segt kitrni a grafikus eszkzk korltai mgl.
-
1. Elmlet
10
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
olvasgatsa, 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
PowerShell MVP, MCT, MCITP
mailto:[email protected]
-
1.2 Kezdetek
11
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
1.2 Kezdetek
1.2.1 A PowerShell teleptse
A 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.
http://support.microsoft.com/default.aspx/kb/968929
-
1. Elmlet
12
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
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 LastWriteTime Length Name
---- ------------- ------ ----
d---- 2009.07.14. 5:20 PerfLogs
d-r-- 2009.11.09. 21:23 Program Files
d-r-- 2009.11.11. 22:22 Program Files (x86)
d-r-- 2009.11.09. 21:15 Users
d---- 2009.11.15. 12:35 Windows
-a--- 2009.11.11. 0:32 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
-
1.2 Kezdetek
13
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
Get-ChildItem : Cannot find path 'C:\s' because it does not exist.
At line:1 char:4
+ dir
-
1. Elmlet
14
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
Directory: C:\PerfLogs
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2009.07.14. 4:35 Admin
A Get-ChildItem lerst elolvasva joggal krdezhetjk, hogy mirt vltozott meg az gvilgon
minden, ha egyszer ugyanazt a feladatot hajtja vgre a Get-ChildItem, mint a j reg dir parancs. A
vlasz pedig egyszeren az, hogy nem ugyanazt vgzi el, nem ugyangy, s nem ugyanazzal az eredmnnyel! A
Get-ChildItem pldul nemcsak mappkbl, hanem szmos ms adatforrsbl is kpes listt produklni,
gy a regisztrcis adatbzisbl, a tanstvnytrbl, stb. is, kimenete pedig korntsem az a lista, amit a
kpernyn lttunk.
Ha kiadjuk az albbi parancsot, szomoran lthatjuk, hogy help parancs sem ltezik, az igazi neve
Get-Help.
[5] PS C:\> 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 /s
PS 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.
-
1.2 Kezdetek
15
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
PS C:\> Get-ChildItem registry::HKLM/Software
dir *.exe
PS 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.
-
1. Elmlet
16
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
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 vgrehajtsa
Lttuk, 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, belltsok
Nagyban meggyorstja munknkat, ha ismerjk azokat a gyorsbillentyket, amelyek elrhetek a
PowerShell ablakban:
TAB Automatikus kiegszts, tovbbi TAB tovbbi tallatokat ad
Shift + TAB Visszalp az elz tallatra
-
1.2 Kezdetek
17
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
F1 1 karakter a trtnet-trbl
F2 Bert karakterig msol
F3 vagy Elz parancs a trtnet-trbl
F4 Kurzortl az adott karakterig trl
F5 vagy Lpked vissza a trtnet-trbl
F6 hatstalan
F7 Trtnettrat megjelenti
F8 Parancstrtnet, de csak a mr begpelt szvegre illeszkedeket
F9 Bekri a trtnettr adott elemnek szmt s futtatja
Jobbkattints Beilleszts
Egrrel kijell +
Enter
Msols
Karaktert lpked, res sorban a parancstrtnet-trbl hv el karaktereket
Karaktert lpked
ESC 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 ( ), akkor a kvetkez men
jelenik meg:
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.
-
1. Elmlet
18
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
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.
-
1.2 Kezdetek
19
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
Ha 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-billenty
Az 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:
-
1. Elmlet
20
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
PS 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 C:\> $s = "hell"
PS C:\> $s.
PS C:\> $excel = new-object -comobject excel.application
PS C:\> $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 sor
Lthat, 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:
-
1.2 Kezdetek
21
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
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 Parancstrtnet
A PowerShell ablak megjegyzi a korbban begpelt parancssorainkat. Ezt a parancstrtnet-trat az F7
billentyvel tudjuk megjelenteni. Vigyzat! Ktfajta trtnet-sorszmozs van:
-
1. Elmlet
22
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
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.
-
1.2 Kezdetek
23
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
1.2.9 A PowerShell, mint szmolgp
A 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 trlse
Ha mr jl telertuk a PowerShell ablakot, s szeretnnk, ha res lenne jra, akkor futtassuk a Clear-
Host cmdletet. Ennek van kt gyakran hasznlt lneve is: cls, clear.
1.2.11 Kis-nagybet
A 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 Name Definition
----------- ---- ----------
Cmdlet Get-Help Get-Help [[-Name] ...
[5] PS I:\>GET-COMMAND get-HELP
CommandType Name Definition
----------- ---- ----------
Cmdlet Get-Help Get-Help [[-Name] ...
-
1. Elmlet
24
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
Az 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 Environment
Nagyon 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.
-
1.2 Kezdetek
25
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
Ez 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
-
1. Elmlet
26
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
Nagyon praktikus, fleg a szkriptjeink tesztelsi fzisban, hogy lehetsg van csak a kijellt szkriptrszek
futtatsra is az eszkzsor Run Selection gombjval.
16. bra A kijellt szkriptrsz futtatsa
Kijells futtatsa
-
1.3 Alapfogalmak
27
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
1.3 Alapfogalmak
Mi 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 Architektra
A 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
-
1. Elmlet
28
A knyv tanfolyami felhasznlsa nem engedlyezett! Sos Tibor soost@ IQJB.hu
csak 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 MemberType Definition
---- ---------- ----------
AppendText Method System.IO.StreamWriter AppendTe...
CopyTo Method System.IO.FileInfo CopyTo(Strin...
Create Method System.IO.FileStream Create()
...
Delete Method System.Void Delete()
...
MoveTo Method System.Void MoveTo(String destF...
...
Attributes Property System.IO.FileAttributes Attrib...
CreationTime Property System.DateTime CreationTime {g...
CreationTimeUtc Property System.DateTime CreationTimeUtc...
Directory Property System.IO.DirectoryInfo Directo...
DirectoryName Property System.String DirectoryName {get;}
Exists Property System.Boolean Exists {get;}
Extension Property System.String Extension {get;}
FullName Property System.String FullName {get;}
IsReadOnly Property System.Boolean IsReadOnly {get;...
LastAccessTime Property System.DateTime LastAccessTime ...
LastAccessTimeUtc Property System.DateTime LastAccessTimeU...
LastWriteTime Property System.DateTime LastWriteTime {...
LastWriteTimeUtc Property System.DateTime LastWriteTimeUt...
Length Property System.Int64 Length {get;}
Name Property System.String Name {get;}