Kimenet (Output)

Az előző alfejezetben bemutattam a csövezés lehetőségét. Ez nem egyszerűen csak paraméterátadás, hanem el is kaphatjuk az éppen átadott paramétert, és annak tulajdonságaival, metódusaival is játszhatunk. Az így átadott paramétert a $_  speciális, automatikusan generálódó változón keresztül érhetjük el.

Fontos fogalom még a PowerShellben az output , azaz a kimenet  fogalma. Majdnem minden cmdletnek van kimenete. Ha mégsem lenne, akkor is van, merthogy ha nem készítünk explicit kimenetet, akkor az implicit módon alaphelyzetben az outputra adódik át. Ez az output lesz a következő csőszakaszban elérhető $_ változó tartalma.

Nézzünk erre példát:

[1] PS C:\> "szöveg" | ForEach-Object{$_.Length}

6

[2] PS C:\> write-output "szöveg" | ForEach-Object{$_.Length}

6

[3] PS C:\> write-host "szöveg" | ForEach-Object{$_.Length}

szöveg

Az első és a második promptnál ugyanazt az eredményt kapjuk, azaz az első csőszakaszban megszületik a „szöveg” objektum, amit átadunk a következő csőszakasznak. Az első esetben implicit módon adjuk át, a második esetben pedig explicit módon.

A write-output  cmdletet igazából nem „emberi fogyasztásra” szánják, ez tisztán a csőszakaszok közti paraméterátadásra szánták, nem pedig a csicsás, színes-szagos konzolos adatmegjelenítésre. Más kérdés, hogy ha a csővezeték legvégén nem rendelkezünk a csővezeték tartalmáról, akkor az „kifolyik” a konzol ablakba, azaz kiíródik a képernyőre.

Nézzük meg a write-output helpjéből a szintaxist:

[7] PS C:\> (get-help  write-output).syntax

 

Write-Output [-inputObject] <PSObject[]> [<CommonParameters>]

Nincs túl sok extra lehetőségünk.

A fenti [3]-as promptnál viszont nem az outputra küldöm a „szöveg”-et, hanem a write‑host  cmdlettel a konzolra (képernyőre), így a következő csőszakasz nem kap semmit és ezért nem is jelenik meg semmilyen hosszadat, csak a write-host által kiírt szöveg.

Nézzük meg a write-host szintaxisát is:

[8] PS C:\> (get-help write-host).syntax

 

Write-Host [[-Object] <Object>] [-BackgroundColor {Black | DarkBlue | DarkGree

n | DarkCyan | DarkRed | DarkMagenta | DarkYellow | Gray | DarkGray | Blue | G

reen | Cyan | Red | Magenta | Yellow | White}] [-ForegroundColor {Black | Dark

Blue | DarkGreen | DarkCyan | DarkRed | DarkMagenta | DarkYellow | Gray | Dark

Gray | Blue | Green | Cyan | Red | Magenta | Yellow | White}] [-NoNewline] [-S

eparator <Object>] [<CommonParameters>]

Ez már sok olyan lehetőséget is tartalmaz, amelyek tényleg az kiírt adatok élvezeti értékét fokozzák: háttér- és betűszínt lehet beállítani, valamint azt, hogy ne nyisson új sort a kiírás végén, valamint ha tömböt adunk neki kiíratásra, akkor megadhatjuk az elválasztó karaktert, aminek közbeiktatásával írja ki egymás mellé az elemeket soremelés helyett.

Amúgy számos egyéb helyekre is tudjuk irányítani a kimenetet:

[29] PS C:\> get-command write* -CommandType cmdlet

 

CommandType     Name                            Definition

-----------     ----                            ----------

Cmdlet          Write-Debug                     Write-Debug [-Message] <Str...

Cmdlet          Write-Error                     Write-Error [-Message] <Str...

Cmdlet          Write-EventLog                  Write-EventLog [-LogName] <...

Cmdlet          Write-Host                      Write-Host [[-Object] <Obje...

Cmdlet          Write-Output                    Write-Output [-InputObject]...

Cmdlet          Write-Progress                  Write-Progress [-Activity] ...

Cmdlet          Write-Verbose                   Write-Verbose [-Message] <S...

Cmdlet          Write-Warning                   Write-Warning [-Message] <S...

A fenti egyéb write-… cmdleteknek a szkriptek hibakeresésénél van elsődlegesen jelentőségük, így majd a hibakeresés fejezetben fogok ezzel részletesen foglalkozni.

Még egy cmdlet kívánkozik ide, az Out-Host . Ez a cmdlet a kimenetét kiírja a konzolra. Tulajdonképpen elhagyható, hiszen a kimenet alaphelyzetben is a konzolon jelenik meg, de ennek a cmdletnek van egy ‑paging kapcsoló paramétere. Ennek alkalmazásával lapozni tudjuk a kimenetet, ami főleg sok adat megjelenítésekor lehet praktikus:

31 . ábra Az Out-Host -Paging hatására megjelenő lapozás

Látható, hogy a szóköz billentyű lenyomásával komplett képernyőnyi adatot tudunk lapozni, az Enter leütésével egy sort.



Word To HTML Converter