A Windows PowerShell (mint a cmd parancssor) kezdetben csak a végrehajtott parancsok előzményeit tárolja csak a jelenlegi PowerShell munkamenetben, amikor bezárja a PowerShell konzol ablakot vagy újraindítja a számítógépet, a beírt PowerShell parancsok előzményeit sehol nem menti. A bash-hoz képest ez jelentős hátrány. A Windows 10-ben bevezetett PowerShell v5 verzióban ezt a hibát kijavították.
Tartalom:
- Parancselőzmények a PowerShell 5.0-ban, PSReadLine modul
- Parancselőzmények törlése a PowerShell alkalmazásban
- Importálja a PowerShell parancselőzményeit egy másik munkamenetbe
Parancselőzmények a PowerShell 5.0-ban, PSReadLine modul
Tegyük fel, hogy beír és végrehajt egy valamilyen összetett PowerShell parancsot. A Windows 10 és a Windows Server 2016 rendszerben, még a számítógép újraindítása után is, megnyithat egy új PowerShell munkamenetet, és megnyomhatja a felfelé mutató nyíl gombot. A képernyőn megjelenik az utoljára beírt parancs. Ha továbbra is megnyomja a fel gombot, látni fogja az összes korábban végrehajtott parancsot. Így a fel és le billentyűkkel görgetheti a parancsok előzményeit és végrehajthatja az előzőleg beírt parancsokat..
A PowerShell korábbi verzióiban az aktuális munkamenet parancselőzményeit a bezárás után nem mentették meg. A fel / le billentyűkkel görgetheti az aktuális munkamenet parancsának előzményeit, vagy egyszerre megjelenítheti azokat a parancsmag segítségével kap-történelem.Részletesebb információt jeleníthet meg a korábban végrehajtott parancsokról, ideértve a parancs állapotát és kezdési / befejezési idejét:Get-History | Format-List -Property *
A Windows 10 PowerShell alapértelmezés szerint az egyes felhasználói profilokban található szövegfájlban tárolt utolsó 4096 parancsra emlékszik
% userprofile% \ AppData \ Roaming \ Microsoft \ Windows \ PowerShell \ PSReadline \ ConsoleHost_history.txt
. Az előzményeket külön tárolják a PowerShell konzolok, az ISE külön.
A futó PowerShell-parancs csak a befejezése után kerül be az előzményekbe. Ha a PoSh parancs végrehajtása sokáig tart, akkor csak a parancs előzményeiben láthatja, amikor befejeződött..Abban az esetben, ha nem akarja görgetni a PowerShell-parancsok teljes előzményeit, a parancs-előzmények között kereshet a billentyűparancs segítségével CTRL+R (fordított keresés) és CTRL+S (keresés előre). Nyomja meg a billentyűkombinációt, és kezdje el beírni a parancs azon részét, amelyet meg akar találni az előzőleg végrehajtott parancsokban. A parancselőzmények bármilyen helyzetben megkeresi a bevitt szöveget (ellentétben az F8 vagy a Shift + F8 által a PowerShell konzolon végzett keresésekkel, amelyek csak a sor elejétől keresik a találatokat), és a megfelelő opció ki van emelve.
megjegyzés. A PowerShell 5 parancsnaplózási funkciója nem épül be a Windows Management Frameworkbe, hanem egy harmadik fél modulján alapul. PSReadLine, jelentősen bővíti a PowerShell konzol funkcionalitását. Windows 10 rendszeren a könyvtárban található C: \ Program Files\ WindowsPowerShell\ Modulok\ PSReadline és automatikusan importálódik, amikor a PowerShell konzol elindul. A PSReadLine szintaxis kiemelést biztosít a konzolon, felelős azért, hogy a szöveget egérrel válasszák, és a CTRL + C és a CTRL + V segítségével másolja / illessze be. A PSReadLine nem része a Windows korábbi verzióihoz külön telepített PowerShell 5-nek. Így ha a végrehajtott PowerShell-parancsok energia-naplózási funkcióját az operációs rendszer korábbi verzióiban (Windows 7 / 8.1 / Windows Server 2008 / R2 / 2012R2) szeretné használni a Windows Management Framework 5.1 telepítésén kívül, akkor a PSReadLine modult a PackageManagement csomagkezelővel (korábban) kell telepítenie. OneGet) az online lerakatból:Telepítőmodul PSReadLine
A PowerShell parancsfuttatás-előzményeinek kezelésére szolgáló PSReadLine modul-funkciók és a hozzájuk csatolt kulcsok teljes listája a parancs segítségével jeleníthető meg:
Get-PSReadlineKeyHandler | ? $ _. funkció-szerű '* hist *'
A kulcs funkció leírása
--- -------- -----------
A kulcs funkció leírása
--- -------- -----------
UpArrow PreviousHistory A bevitt adatokat cserélje ki az előző napló elemre
DownArrow NextHistory Cserélje le a bejegyzéseket a következő naplóbejegyzésre
Ctrl + R ReverseSearchHistory Az interaktív naplókeresést hátra fordítva hajtja végre
Ctrl + S ForwardSearchHistory Interaktív naplókeresést hajt végre a menetirányba
Alt + F7 ClearHistory Az összes elem törlése a parancssori naplóból (nem a PowerShell-naplóból)
F8 HistorySearchBackward Az előző naplóelem keresése, amely az aktuális bemenettel kezdődik, például P ...
Shift + F8 HistorySearchForward A következő naplóelem keresése, amely az aktuális bemenettel kezdődik, például Ne ...
Nincs korlátozás. ViSearchHistoryBackward Új naplókeresést indít hátra.
Nincs korlátozás BeginningOfHistory Ugrás az első napló elemhez
Nincs korlátozás EndOfHistory Ugrás a napló utolsó eleméhez (aktuális bemenet)
A parancselőzmények a parancsmagok használatával vannak konfigurálva kap-PSReadlineOption és készlet-PSReadlineOption. Az aktuális beállítások a következő formátumban szerezhetők be:
Get-PSReadlineOption | válasszon HistoryNoDuplicates, MaximumHistoryCount, HistorySearchCursorMovesToEnd, HistorySearchCaseSensitive, HistorySavePath, HistorySaveStyle
Érdekelhetjük a következő paraméterek beállításait:
- HistoryNoDuplicates - Ugyanazokat a parancsokat kell megtartanom a PowerShell előzményeiben?
- MaximumHistoryCount - mentett parancsok maximális száma (alapértelmezés szerint 4096 parancs mentésre kerül);
- HistorySearchCursorMovesToEnd - hogy a parancs végére menjen-e keresés közben;
- HistorySearchCaseSensitive - a keresés végrehajtásakor nagybetűkre érzékenynek kell lennie;
- HistorySavePath - elérési út egy szövegfájlhoz, amelybe a PowerShell-parancsok előzményei kerülnek mentésre;
- HistorySaveStyle - a mentési parancsok jellemzői:
- SaveIncrementally - a parancsok mentésre kerülnek végrehajtás közben (alapértelmezés szerint)
- SaveAtExit - előzmények mentése a konzol bezárásakor
- SaveNothing - letiltja a parancselőzményeket
A PSReadLine modul beállításait a Set-PSReadlineOption paranccsal módosíthatja, például:
Set-PSReadlineOption -HistorySaveStyle SaveAtExit
Így a végrehajtott parancsok előzményeinek mentése a PowerShell 5.0-ban egy másik érv a cmd-nek a PoSh-konzol javára történő elhagyása szempontjából..
Parancselőzmények törlése a PowerShell alkalmazásban
Mint fentebb leírtuk, a PSReadline modul a PowerShell konzol összes parancsát szöveges fájlba menti. Előfordulhat azonban, hogy bizonyos esetekben a rendszergazdának különféle bizalmas információkat (hitelesítő adatokat, jelszavakat, címeket, személyes adatokat stb.) Kell beírnia a PowerShell konzolba. Így egy másik szerver adminisztrátor vagy támadó hozzáférhet a szöveges fájl adataihoz. Biztonsági okokból előfordulhat, hogy törölnie kell a PowerShell parancsnaplót, vagy teljesen le kell tiltania a parancselőzményeket.
parancsmaggal Tiszta történelem
nem használható a parancsok előzményeinek törlésére, mert csak törli a korábbi parancsok listáját, amelyeket a Get-History parancsmag megjelenít.
A korábbi PoSh parancsok előzményeinek törléséhez törölnie kell azt a fájlt, amelybe mentették őket. Ennek legegyszerűbb módja a következő parancs:
Elem eltávolítása (Get-PSReadlineOption) .HistorySavePath
Ezután zárja be a PoSh munkamenetet:
Ha teljesen le szeretné tiltani a PoSh parancsok előzményeinek szöveges fájlba történő mentését, akkor futtassa a következő parancsot:
Set-PSReadlineOption -HistorySaveStyle SaveNothing
Importálja a PowerShell parancselőzményeit egy másik munkamenetbe
Bizonyos esetekben kényelmes, ha kéznél van egy vagy ugyanaz a gyakran használt PowerShell-parancsok listája a különböző számítógépeken. Exportálhatja az aktuális parancselőzményeket egy xml fájlba, és más számítógépeken is importálhatja. Ezt megteheti úgy, hogy a ConsoleHost_history.txt fájlt a szükséges számítógépek felhasználói profiljaira másolja..
Az Export-Clixml parancsmag segítségével parancsokat exportálhat az aktuális munkamenetből egy fájlba:
Get-History | Export-Clixml -C elérési út: \ ps \ Command_hist.xml
Parancsok importálása egy fájlból egy PoSh-munkamenetbe:
Kiegészítő előzmények -InputObject (Import-Clixml-C elérési út: \ ps \ Command_hist.xml)
A parancsok automatikus importálásához egy fájlba a PoSh munkamenet végén, köti a szkriptet a PoSh munkamenet vége eseményhez (!! A munkamenetnek az exit paranccsal kell véget érnie, és nem csak a PoSh ablakot kell bezárnia):
$ HistFile = Csatlakozás útja ([Környezet] :: GetFolderPath ('UserProfile')) .ps_history
Register-EngineEvent PowerShell.Exiting -Action Get-History | Export-Clixml $ HistFile | out-null
if (Test-path $ HistFile) Import-Clixml $ HistFile | Add története