PowerShell - syntaxe

Vystavil tito100

25.08.2010

0
Nedávno sme si predstavili zaujímavý nástroj na automatizáciu prostredia Windows . Kedže k automatizovanému ovládaniu windows-u je treba príkazy správne zapísať, tak dnešný článok obsahuje kompletný prehlad syntaxe tohto skriptovacieho jazyka.


aritmetické operátory


+sčítanie,pričítanie,spájanie
-odčítanie
*násobenie,opakovanie retazca
/delenie
%percentá

porovnávacie operátory poľa Array


vráti všetky elementy rovnajúce sa 3:1,2,3,5,3,2 –eq 3
vráti všetky elementy menšie ako 3:1,2,3,5,3,2 –lt 3
ak 2 ecistuje:if (1, 3, 5 –eq 2) …
ostatné operátory "-gt, -le, -ge"

Polia Array


"a","b","c" pole reťazcov
1,2,3 pole čísel
@() prázdne pole
@(2) alebo ,2 pole z jedným elementom
1,(2,3),4 vnorené pole
$a[5] pole zo šiestimi elementami
$a[2][3] dvojrozmerné pole z 4 elementami

operátory priradenia


= priradí hodnotu do premennej
+= pridá hodnotu k premennej
-= odčíta hodnotu z premennej
*= násobí hodnotu
/= delí hodnotu
%= vykoná perceto na premennej

Asociácie poľa Array


$hash = @{ } vytvorí prázdne pole
$hash.key1 = 1 vloží hodnotu jedna do prvku 1
$hash.key1 vráti hodnotu 1
$hash"key1" vráti hodnotu prvku 1
$hash"key1"=2 nastaví hodnotu 1 prvku "key1"
$hash.key1={cmd} nastaví blok kódu do prvku 1
$hash.key1(1,2) spustí blog kódu z parametrami (1,2)

hodnoty boolean


$true = 1 –eq 1 nastaví truhe premennej True
1,2,3 –and $true #true
$() –and $true #false
@() –and $true #false
@(1) –and $true #true
"" –and $true #False
"word" –and $true True

príkaz break


while (1)
{
$a = something
if ($a –eq 1) break;
}

návratové hodnoty


$( )Vráti null
$(1) Vráti 1
$(1,2,3) Vráti pole Array : 1,2,3.
@(get-alias;get-process) vykoná príkazy a vráti hodnoty v poli

komentáre


# komentár
$a = "#toto NIEJE komentár"
$a = "something" # toto však je komentár

p

orovnávacie operátory


""-band, -bor, -bnot"" and, or, not
""-match,-notmatch"" nájdený, nenájdený
""-like,-notlike"" podobný, nieje podobný
""-eq, -ne"" Equal, Not equal
""-gt, -ge"" väčšie ako, väčšie alebo sa rovná
""-lt, -le"" menšie ako, menšie alebo sa rovná
""-is"" porovnýva typy (1 ""-is"" int)

Nezáleží na veľkosti písmen:
""-imatch, -inotmatch, -ilike, -inotlike, -ieq, -ine, -igt, -ige, -ilt, -ile""

jasne dáná velkosť písmen :
""-cmatch, -cnotmatch, -clike, -cnotlike, -ceq, -cne, -cgt, -cge, -clt, -cle""

while (1)
{
$a = nieco
if ($a –eq 1) (continue)
}

špeciálne znaky


`0 (null)
`a (znelka)
`b (backspace)
`f
`n (nový riadok)
`r
`t (tab)
`v
` (prevedie príkaz alebo další riadok)

smyčka for

for ($i = 0; $i –lt 5; $i++) {write-object $i}
$i = 1,2,3
foreach ($z in $i) {write-object $z}

vlastná funkcia


function MyFunction
{
echo $args[2]
}
function MyFunction]
{param ($parameter1, $argument2, $parameter3)
echo $argument2
}

filtre


filter MyFilter {
$_.name
}

if/elseif/else


if (1=1) {
}
elseif (1=1) {
}
else {
}

Operátor & môže byť použitý na vyvolanie obsahu objektu. Naríklad:


$a = "get-process"
&$a
$a = { get-process | pick-head 2 }
&$a

logické operátory


! and -not
-and
-or

Volanie metód


$a = "toto je retazec"
$a.ToUpper()
$a.SubString(0,3)
$a.SubString(0,($a.length/2))
$a.Substring(($a.length/2), ($a.length/3))

Globálne premenné


$$
$?
$^
$DebugPreference
$ErrorActionPreference
$HistorySize
$PSCommandPath
$ReportErrorShowExceptionClass
$ReportErrorShowInnerException
$ReportErrorShowSource
$ReportErrorShowStackTrace
$ShouldProcessPolicy
$ShouldProcessReturnPolicy
$StackTrace
$VerbosePreference
$_
$Args
$Error
$foreach
$Home
$Input
$PSHome
$Host
$OFS
$StackTrace

vlastnosti objektu


$a = get-date
$a.Date
$a.TimeOfDay.Hours

presmerovania výstupu


1,2,3 >foo.txt
5,6 >>foo.txt

bloky skriptu


$block = {get-process; $a=1}
&$block

vykonávanie scriptu/volanie funkcie


$sum = MyAdder.ps1 1 2 3
$sum = MyFuntion 1 2 3
$sum = MyFuntion(1,2,3)

premenná v reťazci


"toto je retazec, zobrazí túto premennú $variable "
‘toto je retazec, túto premennú nezobrazí $variable ’

operátory retazsca


+ spojí 2 retazce
* opakuje retazec
-f vymaže retazec
-replace vymení čast retazca

ukážka:
PS> "test" + "this"
testthis
PS> "{0:M}" -f $(get-date)
June 02
PS> $a = 1,2,3,4
PS> $a
1
2
3
4
PS> $OFS = ":"
PS> "$a"
1:2:3:4
PS> "This is a test" -replace "is","IS"
ThIS IS a test

smyčka switch


$a = 3
switch ($a)
{
1 {"one"}
2 {"two"}
3 {"three"}
}


$var = "word2"
switch -regex ($var)
{
"word2" {"zhoduje sa " + $_ }
"word.*" {"zhoduje sa " + $_ }
default {"nezhoduje ale je to default " + $_; break}
"w.*" {"defaultne sa nevykonalo kedže sa našla zhoda, break na toto neplatí"}
}


$var = "word1","word2","word3"
switch -regex ($var)
{
"word1" {"našlo sa " + $_ ; continue}
"word2" {"našlo sa " + $_ ; continue}
default {"vykoná sa defaultne vdaka predošlému continue " + $_; continue}
}

blok while


while (1=1)
{
$=1
}

ostatné, nezaradené :


function handler1 { write-host "Hi, I m a trap handler" }
function handler2 { write-host "Hi, I m a trap handler2" }
trap [System.Management.Automation.ExecutionFailedException]
{ handler2 ; continue }
trap [System.Management.Automation.ExecutionBreakOnErrorException]
{ handler1 ; continue }
get-content thisisabadfilename -errorp notifystop
set-location thisisabadlocation

""++"" Increment a variable
-- Decrement a variable
+ Indicate that a number is positive
- Indicate that a number is negative
""typeobject"" cast object to type

@$a = [int]"3"@
@$a + 3@
@6@

Format: $scope:name
$a = 1
$global:a = 1
$local:a = 1
$env:path = "d:windows"

Hodnocení +23Líbí
Přečteno 1145-krát

Komentáře

Přidat nový



Pro přispívání musíte být přihlášen



Poslední komentáře

Sousední akvárko

Nejčtenější

Nejlepší

Web Kreveta.net je unikátní sbírkou článků mapují proces tvorby her. Vedle návodů naleznete v krevetím akvárku i rozhovory s vývojáři, recenze, soutěže. Portál Kreveta.net připravují (řazeno abecedně): Akhera, Banane4joy, Bullet_catcher, Burák, Fire.js, Ikkju, Izual, Likandro, Makan, PepiCzech, StorN, Tior.
Akvárko vymaloval Tior, o chod filtrace se stará StorN (design a kód).
Copyright © 2010 Kreveta.net. Všechna práva vyhrazena.