Kihagyás

10. gyakorlat

PowerShell (folytatás)

Változók

Valami Szintax Megjegyzés
Azonosító $adat Változónevek elé mindig kell $, nem csak értékre hivatkozáskor
Értékadás $változó = érték
Típus megadása [típus]$változó = érték
Tartalom törlése Clear-variable változó
Változó lista Get-Variable
Tömbök $tömb = 'egy','kettő','három' C-hez hasonló
Tömbök bővítése $tömb = $tömb + $elem

Példa:

$állatok = Get-Content .\állatok.txt
Get-Variable állatok # az `állatok` egy string tömb
$állatok = $állatok + "nyúl"
$szum = $args[0] + $args[1]
Write-Host Összeg: $szum

$szorzat = $args[0] * $args[1]
Write-Host Szorzat: $szorzat

Típusok

  • string
  • char
  • byte
  • int
  • long
  • bool
  • single
  • double
  • DateTime

Típuskonverziók

<érték>.To<típus>()

Példák:

$s="alma"
$s # kiírja az "alma" szót
$c=$s.ToCharArray()
$c #kiírja az "alma" szót betűnként
$szam=19
$szoveg=$szam.ToString()
$szoveg #kiírja a számot

Matematikai műveletek

[math] - különböző matematikai segédfüggvények, konstansok

[math] | Get-Member -Property Name #kiírja a math könyvtár összes elemét

Pl.:

[math]::pi #kiírja a Pi értékét

Szöveg műveletek

Split

"string".Split('mezőhatároló')[sorszám]

Példa:

# Elemekre bontja a ',' mentén
"egy,kettő,három".Split(',')

# Elemekre bontja a ',' mentén és a 0. elemet írja ki
"egy,kettő,három".Split(',')[0]

Substring

"string".Substring(mettől, hányDarab)

Példa:

# A 2. elemtől számolva vesz 3 db-ot
"egy,kettő,három,négy,öt,hat,hét,nyolc,kilenc,tíz".Substring(2, 3);

Replace

"string".Replace("régi", "új")

Példa:

#Kicseréli a "négy" szót "sok"-ra
"egy,kettő,három,négy".Replace("négy", "sok")

PowerShell script

Kiterjesztés és futtatás

Kiterjesztés: .ps1

Fontos! Meg kell adni a futtatási jogot!

Script futtatási jog megadása:

  • rendszergazdaként indítani
  • Set-ExecutionPolicy RemoteSigned

Futtatás:

  • PowerShell ISE: Runscript vagy F5 billentyű
  • PowerShell: .\<script>
  • DOS: powershell \.<script>

Paraméterek

$args: összes paraméter (tömbben vannak a paraméterek)

Ebben CSAK a paraméterek vannak, a script neve nem.

$args[n]: n. paraméter

$args.Count vagy $args.length: paraméterek száma

$MyInvocation.Mycommand.Name: script neve

Kötelező paraméter

param
(
    [Parameter(Mandatory=$true)][típus] $változó
)

Stringer összefűzése

Write-Output (-join("Első ", "szöveg", "."))

Kiíratás

Write-Output

Write-Host

Beolvasás

Read-Host

A billentyűzetről olvas be adatot

Értéke a beolvasott adat

  • -Prompt - Kérdés a beolvasás előtt
$adat=Read-Host -Prompt "adat?"

Hibaüzenetek kikapcsolása

"Globálisan":

$ErrorEctionPreference="SilentlyContinue"

Kifejezetten adott parancs esetén:

Parancs -ErrorEction SilentlyContinue

Csővezeték

Csővezeték enumerátor: $input

Elemszám: @($input).Count

Eredeti állapot helyreállítása: $input.Reset()

Példa: (lentebb)

Ciklusok

foreach

Lista vagy tömb bejárása

foreach ($ciklusváltozó in lista)
{
    cilusmag
}

Példa:

foreach ($i in 1, 2, 3, 4, 5)
{
    Write-Host $i Hajrá magyarok!
}

for

for (kezdőértékadás; ciklusfeltétel; léptetés)
{
    ciklusmag
}

Példa:

for($i=0; $i -lt 5; $i++)
{
    Write-Host $i Hajrá magyarok!
}

while

while (ciklusfeltétel)
{
    ciklusmag
}

do-while

do
{
    ciklusmag
} while (ciklusfeltétel)

Elágazások

if

C szintax, de az elseif egyben van!

A feltételek Unix szerűen épülnek fel, pl: 3 -lt 4

if (feltétel)
{

}
elseif (feltétel2)
{

}
else
{

}

Példa:

$szum = 0
if (@($input).Count -gt 0)
{
    $input.Reset()
    foreach($i in $input)
    {
        $szum += $i
    }
}
else
{
    foreach($i in $args)
    {
        $szum += $i
    }
}
Write-Output $szum
$from = Read-Host -Prompt "Első"
$to = Read-Host -Prompt "Utolsó"
if($from -gt $to)
{
    Write-Host "Hibás sorrend"
}
else
{
    Write-Host "Helyes sorrend"
}

switch

switch (változó)
{
    érték1
    {
        tevékenység1
    }
    érték2
    {
        tevékenység2
    }
    ...
    default
    {
        tevékenység
    }
}

Példa:

$a = Read-Host -Prompt "Kérek egy számot"
switch($a)
{
    1 {Write-Host Első}
    2 {Write-Host Második}
    3 {Write-Host Harmadik}
}