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:
36
. á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.