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

80634429 Microsoft Power Shell 2 Konyv

  • Upload
    viko13

  • View
    114

  • Download
    0

Embed Size (px)

Citation preview

  • 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

    [email protected]

    PowerShell MVP, MCT, MCITP

  • 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.

  • 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;}

    BaseName ScriptProperty System.Object BaseName {get=[Sy...

    Mode ScriptProperty System.Object Mode {get=$catr =...

    ReparsePoint