Ismerkedés a powershellel 2. rész http://powershell.com/cs/blogs/ebook/archive/2008/10/21/chapter-2-interactive-powershell.aspx Powershell script készítése álljunk a saját mappánkba készítsünk egy állományt ps1 kiterjesztéssel o notepad teszt.ps1 o Tartalma: dir help dir o Futtatás:.\teszt.ps1 o Ha nem fut, akkor Set-ExecutionPolicy RemoteSigned parancsot ki kell adni. Változók $összeg=100 $adó=0.2 $eredmeny= $összeg * $adó $eredmeny $szöveg= "Az $összeg adó tartalma: $eredmeny" $szöveg Többszörös értékadás $a = $b = $c = 1 Változó értékének cseréje: $gyümölcs="kutya" $állat="banán" Hagyományos mód: $ideiglenes =$gyumolcs $gyümölcs=$állat $állat=$ideiglenes 1
Powershellben: $gyümölcs="kutya" $állat="banán" $gyümölcs, $állat = $állat, $gyümölcs Változók megjelenítése: dir variable: o más változók is megjelennek nem csak a mi általunk generált dir variable: -include gyüm* vagy dir variable:gyüm* o szűkíthetjük dir variable: -include a* -exclude *d* Létezik-e az adott változó? o test-path variable:\adó Változó törlése: o del variable:\gyümölcs Automatikus Változók és leírásuk megjelenítése Dir variable: Sort-Object Name Format-Table Name, Description -autosize -wrap Változó létrehozása leírással: New-variable adókulcs -Value 0.25 -Description "Adókulcs mértéke" Környezeti változók dir env: Al-kifejezések használata "Eredmény = 10*2" "Eredmény = $(10*2)" //nem jó, nem írja ki az eredményt // kiírja az eredményt $file = Dir c:\autoexec.bat $file.length "A fájl mérete: $file.length byte." //nem jó "A fájl mérete: $($file.length) byte." // jó eredményt ad 2
Tömbök használata $a = "Hello" $a -is [Array] //false eredmény $a = ipconfig $a -is [Array] // true eredmény $a.count //hány elemből áll $a[0] //1. elem (0-tól indexelődik) A powershell parancsok tömböt adnak vissza eredményül, de ez az eredmény számától is függ. $eredmeny=dir c:\autoexec.bat $eredmeny -is [array] //hamis Csinálhatunk belőle tömböt akkor is, ha csak egy eredményt kapunk vissza: $eredmeny=@(dir c:\autoexec.bat) $eredmeny -is [array] Tömbök kezelése $tömb = 1,2,3,4 $tömb //kiírja az értékeket Ez is jó: $tömb = 1..10 $tömb = "Hello", "Világ", 1, 2, (Get-Date) Egy elemű tömb létrehozása: $tömb =,1 $tömb.length //1-et ad vissza Nulla elemű tömb $tömb=@() $tömb.length //0-t ad vissza Tömb elemek elérése $tömb = -5..12 $tömb [0] //első elem 3
$tömb[-1] //utolsó elem $tömb[$tömb.count-1] //utolsó elem $tömb[$tömb.length-1] //utolsó elem (-5..12)[2] // -3-at ad eredményül Néhány elem kiválasztása: $tömb[1,3,5] $tömb = $tömb[0..1] + $tömb[3..5] Tömb megfordítása $tömb = 1..10 $tömb = $tömb[($tömb.length-1)..0] $tömb //kiíratja az eredményt Elem hozzáadása (+=) $tömb += 11 //új elem a 11 lesz Tömb másolása $tömb1 = 1,2,3 $tömb2 = $tömb1 $tömb2[0] = 99 $tömb1[0] Csak a hivatkozás másolódik, nem maga az értékek! Helyette klónozni kell. $tömb1 = 1,2,3 $tömb2 = $tömb1.clone() $tömb2[0] = 99 $tömb1[0] De ha új elemet adunk hozzá, akkor már másolás lesz a háttérben $tömb1 = 1,2,3 $tömb2 = $tömb1 $tömb2 += 4 $tömb2[0]=99 $tömb1[0] 4
Erősen típusos tömb [int[]]$tömb = 1,2,3 $tömb += 4 $tömb += 12.56 $tömb += "123" Ez mind végrehajtódik, kerekítés, konvertálás $tömb += "valami" //ez hibát ad remove-item variable:tömb //tömb törlése HASH tábla készítése $lista = @{Név = "Gipsz Jakab";Kor=28;email="gipsz@inf.elte.hu";} $lista["név"] //visszaadja a nevet $lista.név //ez is megfelelő kulcsok kilistázása: $lista.keys Értékek kilistázása $lista[$lista.keys] Új érték hozzáadása: $lista["nem"]="férfi" Kulcs eltávolítása $lista.remove("nem") 5
Feltételek Nem kis nagybetű érzékeny. Ha c-t teszünk, akkor case-sensitive, ha i-t akkor insensitive "szöveg" -eq "Szöveg" //true "szöveg" -ceq "Szöveg" //false 1,2,3 -contains 5 //false 1,2,3 -notcontains 5 //true where-object használata get-process format-list * //folyamatokról részletes információ Get-Process Where-Object { $_.company -like 'microsoft*' } Get-Process Where-Object { $_.company -notlike 'microsoft*' } Ha (if) $a = 11 If ($a -gt 10) { "$a nagyobb, mint 10" } If ($a -gt 10) {"$a nagyobb, mint 10"} Else {"$a kisebb, vagy egyenlő, mint 10"} Elágazás (switch) 6
$szám = 1 Switch ($szám) { 1 { "Megérett a meggy" } 2 { "Csipkebokor vessző" }} $szám = 1 Switch ($szám) { $_ -le 5 { "Kisebb 5-nél" } 3 { "Ez bizony három" }} 3-nál mindkét ág végrehajtódik, if-nél nem! Behelyettesítés Switch ($szám) {{ $_ -le 5} { "Kisebb 5-nél" } 3 { "Ez bizony három" }} Switch ($szám) {{ $_ -le 5} { "Kisebb 5-nél" } default {"Nem kisebb 5-nél" }} $tömb = 1..5 Switch ($tömb) { {$_ % 2} { "$_ páratlan"} Default { "$_ páros."} } Ciklusok Foreach Dir C:\ ForEach-Object { $_.name } //szűrőknél inkább ezt használjuk Foreach ($element in Dir C:\) { $element.name } $tömb = 3,6,"Hello", 12 Foreach ($elem in $tömb) {"Aktuális elem: $elem"} remove-item variable:tömb //tömb törlése ha kell do, while Do { $bemenet = Read-Host "A honlapod:" } While ($bemenet -notlike "www.*.*") $szám=1 while ($szám -lt 10) {$szám=$szám+1; $szám} 7
for 7 véletlenszám kiírása $random = New-Object system.random For ($i=0; $i -lt 7; $i++) { $random.next(1,49) } faktoriális számítás notepad fakt.ps1 $szam=5 $fakt=1 for($i=1;$i -le $szam;$i++) { $fakt=$fakt*$i } write-host "A $szam faktoriálisa: $fakt" 8