Megosztás a következőn keresztül:


Kimenet átirányítása

A PowerShell számos parancsmagot biztosít, amelyekkel közvetlenül szabályozhatja az adatkimenetet. Ezek a parancsmagok két fontos jellemzővel rendelkeznek.

Először is általában valamilyen szövegformává alakítják át az adatokat. Ezt azért teszik, mert az adatokat olyan rendszerösszetevőknek adnak ki, amelyek szövegbevitelt igényelnek. Ez azt jelenti, hogy az objektumokat szövegként kell ábrázolniuk. Ezért a szöveg úgy van formázva, ahogy a PowerShell-konzolablakban látja.

Másodszor, ezek a parancsmagok a PowerShell-igét használják, Ki, mert adatokat küldenek ki a PowerShellből máshová.

Konzolkimenet

A PowerShell alapértelmezés szerint adatokat küld a gazdagépablakba, és pontosan ezt teszi a Out-Host parancsmag. A Out-Host parancsmag elsődleges használata a lapozás. Az alábbi parancs például a Get-Command parancsmag kimenetének lapozásához Out-Host használ:

Get-Command | Out-Host -Paging

A gazdaablak megjelenítése a PowerShell-en kívül van. Ez azért fontos, mert amikor az adatokat a PowerShellből küldi el, az ténylegesen el lesz távolítva. Ez akkor jelenik meg, ha olyan folyamatot próbál létrehozni, amely adatokat jelenít meg a gazdagépablakban, majd megkísérli listaként formázni az adatokat, az itt látható módon:

Get-Process | Out-Host -Paging | Format-List

Előfordulhat, hogy a parancs listaformátumban jeleníti meg a folyamatinformációk lapjait. Ehelyett megjeleníti az alapértelmezett táblázatos listát:

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    101       5     1076       3316    32     0.05   2888 alg
...
    618      18    39348      51108   143   211.20    740 explorer
    257       8     9752      16828    79     3.02   2560 explorer
...
<SPACE> next page; <CR> next line; Q quit
...

A Out-Host parancsmag közvetlenül a konzolra küldi az adatokat, így a Format-List parancs soha nem kap formázási elemet.

A parancs felépítésének helyes módja, ha a Out-Host parancsmagot a folyamat végére helyezi az alább látható módon. Ez azt eredményezi, hogy a folyamatadatok formázása egy listában történik a lapkészítés és megjelenítés előtt.

Get-Process | Format-List | Out-Host -Paging
Id      : 2888
Handles : 101
CPU     : 0.046875
Name    : alg
...

Id      : 740
Handles : 612
CPU     : 211.703125
Name    : explorer

Id      : 2560
Handles : 257
CPU     : 3.015625
Name    : explorer
...
<SPACE> next page; <CR> next line; Q quit
...

Ez vonatkozik az összes Out parancsmagra. A Kimenő parancsmagnak mindig a folyamat végén kell megjelennie.

Megjegyzés

Az Out parancsmagok szövegként jelenítik meg a kimenetet a konzolablakban érvényben lévő formázással, beleértve a sorhosszkorlátokat is.

Kimenet elvetése

A Out-Null parancsmagot úgy tervezték, hogy azonnal elvetje a beérkező bemeneteket. Ez hasznos lehet a parancs futtatásának mellékhatásaként megjelenő szükségtelen adatok elvetéséhez. Amikor beírja a következő parancsot, nem kap vissza semmit a parancsból:

Get-Command | Out-Null

A Out-Null parancsmag nem veti el a hibakimenetet. Ha például a következő parancsot adja meg, egy üzenet jelenik meg, amely tájékoztatja arról, hogy a PowerShell nem ismeri fel Is-NotACommand:

PS> Get-Command Is-NotACommand | Out-Null
Get-Command : 'Is-NotACommand' isn't recognized as a cmdlet, function, operable program, or script file.
At line:1 char:12
+ Get-Command  <<<< Is-NotACommand | Out-Null

Adatok nyomtatása

Out-Printer csak Windows-platformokon érhető el.

Az adatokat a Out-Printer parancsmaggal nyomtathatja ki. A Out-Printer parancsmag az alapértelmezett nyomtatót használja, ha nem adja meg a nyomtató nevét. Bármilyen Windows-alapú nyomtatót használhat a megjelenítendő név megadásával. Nincs szükség nyomtatóportleképezésre vagy akár valódi fizikai nyomtatóra. Ha például telepítve vannak a Microsoft Office dokumentumképkezelő eszközei, az adatokat elküldheti egy képfájlba a következő beírással:

Get-Command -Name Get-* | Out-Printer -Name 'Microsoft Office Document Image Writer'

Adatok mentése

A Out-File parancsmaggal a konzolablak helyett fájlba küldhet kimenetet. A következő parancssor a folyamatok listáját küldi el a fájlnak C:\temp\processlist.txt:

Get-Process | Out-File -FilePath C:\temp\processlist.txt

Ha hozzászoktál a hagyományos kimeneti átirányításhoz, előfordulhat, hogy a Out-File parancsmag használata nem azt az eredményt adja, amit vártál. A viselkedés megértéséhez tisztában kell lennie a Out-File parancsmag működési környezetével.

A Windows PowerShell 5.1-ben a Out-File parancsmag létrehoz egy Unicode-fájlt. Egyes eszközök, amelyek ASCII-fájlokat várnak, nem működnek megfelelően az alapértelmezett kimeneti formátummal. Az alapértelmezett kimeneti formátumot ASCII-ra módosíthatja a Kódolás paraméterrel:

Get-Process | Out-File -FilePath C:\temp\processlist.txt -Encoding ascii

Out-File a fájl tartalmát úgy formázhatja, hogy a konzol kimenetéhez hasonlóan nézzen ki. Ez ahhoz vezet, hogy a kimenet le van rövidítve, hasonlóan ahhoz, mint egy konzolablakban a legtöbb esetben. Ha például a következő parancsot futtatja:

Get-Command | Out-File -FilePath C:\temp\output.txt

A kimenet a következőképpen fog kinézni:

CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Add-Content                     Add-Content [-Path] <String[...
Cmdlet          Add-History                     Add-History [[-InputObject] ...
...

Ha olyan kimenetet szeretne lekérni, amely nem kényszeríti a sortöréseket a képernyő szélességének megfelelőre, a Szélesség paramétert használhatja a vonalszélesség megadásához. Mivel Szélesség egy 32 bites egész szám paraméter, a maximális érték 2147483647. Írja be a következőt a vonalszélességnek a maximális értékre való beállításához:

Get-Command | Out-File -FilePath C:\temp\output.txt -Width 2147483647

A Out-File parancsmag akkor hasznos, ha a kimenetet a konzolon megjelenő módon szeretné menteni.