Windows PowerShell slaat de opdrachtgeschiedenis automatisch op, wat handig is als je iets wat je net hebt getypt opnieuw wilt uitvoeren. In principe worden al je opdrachten in een tekstbestand opgeslagen – want Windows moet het natuurlijk ingewikkelder maken dan nodig. Je vindt het bewijs hiervan in het bestand ConsoleHost_history.txt, te vinden in %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt. Dus als je ooit de opgeslagen geschiedenis wilt bekijken of verder wilt gaan waar je gebleven was, staat alles daar. Bovendien kun je opdrachten zoals Get-History in je huidige sessie gebruiken of de pijltje omhoog in de console voor snelle toegang. Maar let op: zodra je het venster sluit, wordt de geschiedenis gewist, tenzij deze ergens anders is opgeslagen.
Deze opzet is nogal frustrerend voor iedereen die met gevoelige gegevens werkt. Als je opdrachten met wachtwoorden, tokens of persoonlijke informatie kopieert en vergeet deze te wissen, blijft die informatie in dat platte tekstbestand staan. Het is dus goed om te weten hoe je hiermee omgaat als privacy belangrijk voor je is. Gelukkig kun je met PowerShell deze geschiedenis beheren of wissen, wat nodig kan zijn als je met vertrouwelijke inloggegevens werkt of gewoon je bestanden wilt opruimen om veiligheidsredenen.
Hoe u de opdrachtgeschiedenis van PowerShell kunt herstellen voor betere controle
De geschiedenis van PowerShell bekijken en beheren
- In PowerShell kun je met de Up arrowCtrl-toets door de eerder uitgevoerde opdrachten bladeren, zodat je niet alles opnieuw hoeft in te typen als je een opdracht snel wilt herhalen. Je kunt ook `Get-History` gebruiken om een lijst te krijgen van alle opdrachten die je tot nu toe hebt uitgevoerd, inclusief gedetailleerde informatie zoals tijdstempels. Wil je een specifieke opdracht opnieuw uitvoeren? Noteer dan de ID uit de lijst en typ vervolgens `request-ID`
Invoke-History 6. Het is misschien wat omslachtig, maar het werkt. - Windows PowerShell 5.1 en PowerShell Core slaan tot wel 4096 opdrachten op in dat mysterieuze geschiedenisbestand. Je kunt het openen in elke teksteditor, zoals Kladblok, met:
notepad (Get-PSReadLineOption | select -ExpandProperty HistorySavePath). Het is handig als je wilt zien wat er buiten je actieve sessie is opgeslagen.
Zoeken in uw opdrachtgeschiedenis
- Geen zin om door honderden commando’s te scrollen? Probeer CTRL+R voor een omgekeerde zoekopdracht of CTRL+S voor een voorwaartse zoekopdracht. Typ vervolgens een deel van het commando. Hiermee doorzoek je je opgeslagen commando’s – sneller dan met de pijltjestoetsen. Blijf op Ctrl+ CTRL+RR drukken CTRL+Stot je vindt wat je zoekt, of druk op Enter Escom te annuleren.
- Als je snel opdrachten wilt vinden die met een bepaalde tekenreeks beginnen, typ je gewoon
#get-wmi(of je patroon) en druk je op Enter Tab. De laatst overeenkomende opdracht wordt weergegeven. Het is een beetje vreemd, maar wel handig.
Configureer hoe PowerShell de opdrachtgeschiedenis opslaat.
- Standaard beheert PSReadLine je geschiedenis, maar je kunt het gedrag ervan aanpassen. Om de huidige instellingen te bekijken, voer je het volgende commando uit:
Get-PSReadlineOption | selecten vink je opties aan zoals HistoryNoDuplicates (voorkomt herhaling van commando’s), MaximumHistoryCount (maximaal aantal opgeslagen commando’s, standaard 4096) of HistorySavePath (waar de geschiedenis wordt opgeslagen).Wil je meer geschiedenis? Verhoog dan het aantal:Set-PSReadlineOption -MaximumHistoryCount 10000. - Je kunt het ook zo instellen dat dubbele opdrachten niet worden opgeslagen of dat het opslaan helemaal wordt uitgeschakeld als beveiliging een probleem is, bijvoorbeeld:
Set-PSReadlineOption -HistorySaveStyle SaveNothing. Dit zorgt ervoor dat er na elke sessie niets wordt opgeslagen. - Nog een handige truc: je kunt PowerShell commando’s laten negeren die met een spatie beginnen. Voeg bijvoorbeeld deze profielcode toe:
Set-PSReadLineOption -AddToHistoryHandler { param($command) if ($command -like ' *') { return $false } return $true }En dan wordt elke opdracht die met een spatie begint niet opgeslagen. Want natuurlijk moet PowerShell extra moeilijk doen en vereisen dat je het uitvoeringsbeleid instelt op ‘Remotesigned’ voordat dit werkt:
Set-ExecutionPolicy Remotesigned
Bescherm gevoelige opdrachten en wis de geschiedenis.
- Als u wachtwoorden, sleutels of gevoelige informatie invoert en deze niet wilt opslaan, kunt u PowerShell zo configureren dat opdrachten die met een spatie beginnen, worden genegeerd — zoals hierboven is weergegeven. Voor extra veiligheid kunt u het geschiedenisbestand echter ook handmatig verwijderen:
Remove-Item (Get-PSReadLineOption).HistorySavePath - Houd er rekening mee dat hiermee alleen de opgeslagen geschiedenis wordt gewist, niet uw huidige sessie. Om uw huidige geschiedenis te wissen, voert u de volgende opdracht uit
Clear-Historyvoor de betreffende sessie: [opdracht], of verwijder het geschiedenisbestand voor een volledige opruiming. - Als je wilt voorkomen dat PowerShell de geschiedenis automatisch opslaat, doe dan het volgende:
Set-PSReadlineOption -HistorySaveStyle SaveNothing. Houd er wel rekening mee dat je hiermee de handige functie voor het terughalen van opgeslagen geschiedenis volledig kwijtraakt.
Exporteer en importeer de opdrachtgeschiedenis voor gebruik elders.
- Wilt u uw opgeslagen opdrachten op verschillende computers of in verschillende sessies gebruiken? Exporteer ze dan met:
Get-History | Export-Clixml -Path c:\ps\commands_hist.xml. Om ze in een nieuwe sessie te importeren:Add-History -InputObject (Import-Clixml -Path c:\ps\commands_hist.xml). - Sommige mensen geven er de voorkeur aan om het volledige geschiedenisbestand – zoals %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt – naar de profielmap van een andere computer te kopiëren. Het is omslachtig, maar het werkt wel als het correct is geconfigureerd.
Enerzijds is het geschiedenissysteem van PowerShell behoorlijk flexibel als je er eenmaal aan gewend bent. Anderzijds kan het echter lastig zijn als je met gevoelige gegevens werkt of meer controle wilt. Door met de instellingen te experimenteren en het geschiedenisbestand handmatig te beheren, kun je jezelf later een hoop kopzorgen besparen.