Pliki historii i transkrypcji PowerShell – lokalizacja i usuwanie

2026-09-15 0 przez Redakcja plików

Historia wykonanych poleceń oraz pełne zapisy sesji to kluczowe elementy dla każdego użytkownika konsoli PowerShell, niezależnie od tego, czy jest to administrator systemu, czy deweloper. Windows przechowuje historię poleceń PowerShell w pliku ConsoleHost_history.txt, zlokalizowanym zwykle w katalogu `%appdata%\Microsoft\Windows\PowerShell\PSReadLine\`. Natomiast pełne transkrypcje sesji, tworzone na żądanie, domyślnie znajdują się w folderze `%USERPROFILE%\Documents\`, nazwane jako `PowerShell_transcript..txt`.

Pliki historii konsoli PowerShell (ConsoleHost_history.txt)

Co to za plik, jakie ma rozszerzenie i gdzie się znajduje

Plik ConsoleHost_history.txt to zwykły plik tekstowy, który nie ma specjalnego, systemowego rozszerzenia, choć jego nazwa sugeruje kontekst historyczny. Jest tworzony i zarządzany przez moduł PSReadLine, który jest standardową częścią nowoczesnych wersji PowerShell. Domyślnie znajdziesz go pod ścieżką: `%appdata%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt`. Wartość `%appdata%` zazwyczaj wskazuje na `C:\Users\\AppData\Roaming`.

Do czego służy i jaki program go tworzy/używa

Ten plik służy do przechowywania historii wszystkich poleceń, które wprowadziłeś w danej sesji PowerShell. Kiedy uruchamiasz PowerShell, moduł PSReadLine ładuje zawartość tego pliku, umożliwiając Ci przeglądanie i ponowne wykonywanie wcześniejszych komend za pomocą klawiszy strzałek góra/dół. To niezwykle wygodne narzędzie, które znacząco przyspiesza pracę, eliminując potrzebę wielokrotnego wpisywania tych samych poleceń. Jest on nieustannie aktualizowany przez proces PowerShell (powershell.exe) w tle, w miarę wprowadzania kolejnych komend.

Czy to wirus, czy można go usunąć i co się stanie

Nie, ConsoleHost_history.txt nie jest wirusem. To legalny plik systemowy stworzony przez PowerShell. Można go bezpiecznie usunąć. Jeśli go usuniesz, utracisz całą swoją historię poleceń, ale PowerShell automatycznie utworzy nowy, pusty plik historyczny przy kolejnym uruchomieniu sesji. Oczywiście, jeśli plik historyczny zostanie przypadkowo lub celowo zmodyfikowany przez złośliwe oprogramowanie, może to doprowadzić do wykonania niepożądanych poleceń, ale sam plik nie jest zagrożeniem.

Typowe problemy i błędy

  • Duży rozmiar pliku: Po długim czasie użytkowania plik historii może osiągnąć znaczny rozmiar, co czasami spowalnia ładowanie konsoli.
  • Utrata prywatności: Plik historii zawiera wszystkie wprowadzone polecenia, w tym potencjalnie wrażliwe dane (np. hasła przekazywane jako argumenty, choć to zła praktyka).
  • Uszkodzenie pliku: Rzadko, ale może dojść do uszkodzenia pliku, co skutkuje brakiem historii lub błędami podczas jej ładowania.

Pliki transkrypcji sesji PowerShell (PowerShell_transcript_*.txt)

Co to za plik, jakie ma rozszerzenie i gdzie się znajduje

Pliki transkrypcji sesji to również zwykłe pliki tekstowe, zazwyczaj z rozszerzeniem .txt lub czasem .log. Ich nazwa jest generowana dynamicznie i zawiera datę oraz czas rozpoczęcia transkrypcji, np. `PowerShell_transcript.DESKTOP-ABCDEF.20231027103000.txt`. Domyślnie są tworzone w folderze `%USERPROFILE%\Documents\`, ale ich lokalizacja jest w pełni konfigurowalna podczas uruchamiania transkrypcji.

Do czego służy i jaki program go tworzy/używa

Transkrypcje sesji służą do tworzenia kompleksowego zapisu całej aktywności w danej sesji PowerShell. Rejestrują one nie tylko wprowadzane polecenia, ale także *wszystkie* dane wyjściowe (wyniki komend, komunikaty o błędach, ostrzeżenia). Jest to niezwykle przydatne do audytu, debugowania skryptów, dokumentowania konfiguracji czy tworzenia dowodów wykonanych operacji. Programem, który tworzy i używa tych plików, jest PowerShell (powershell.exe), a konkretnie cmdlet Start-Transcript.

Czy to wirus, czy można go usunąć i co się stanie

Podobnie jak pliki historii, pliki transkrypcji nie są wirusami. Są to po prostu zapisy tekstowe Twojej aktywności. Możesz je usunąć bez obaw o stabilność systemu. Usunięcie pliku transkrypcji oznacza jedynie utratę zapisu danej sesji.

Typowe problemy i błędy

  • Duży rozmiar: Długie lub intensywne sesje z dużą ilością danych wyjściowych mogą generować bardzo duże pliki transkrypcji, szybko zajmując miejsce na dysku.
  • Potencjalne ryzyko bezpieczeństwa: Transkrypcje mogą zawierać bardzo wrażliwe dane, takie jak hasła, klucze API czy inne poufne informacje, jeśli zostały one wyświetlone w konsoli. Z tego powodu nie zawsze są idealnym rozwiązaniem dla rejestrowania operacji, gdzie wymagana jest maksymalna poufność.
  • Błędy zapisu: Jeśli użytkownik nie ma uprawnień do zapisu w wybranej lokalizacji, cmdlet `Start-Transcript` zgłosi błąd.
  • Niekompletne zapisy: Zapomnienie o uruchomieniu `Start-Transcript` lub o jego zakończeniu (`Stop-Transcript`) może prowadzić do niekompletnych lub brakujących zapisów.

Dlaczego pliki są read-only lub systemowe?

W większości przypadków ani pliki historii (`ConsoleHost_history.txt`), ani pliki transkrypcji (`PowerShell_transcript_*.txt`) nie są domyślnie ustawione jako pliki tylko do odczytu (read-only) ani pliki systemowe. Są to zwykłe pliki użytkownika, które mogą być modyfikowane i usuwane. Jeśli napotkasz taki plik jako read-only, prawdopodobnie został on tak ustawiony ręcznie przez Ciebie lub przez politykę bezpieczeństwa systemu. Domyślnie, PowerShell potrzebuje uprawnień do zapisu, aby aktualizować te pliki.

Zarządzanie plikami historii i transkrypcji

Zarządzanie tymi plikami jest kluczowe dla efektywności i bezpieczeństwa.

  • Czyszczenie historii: Aby wyczyścić historię poleceń w PowerShell, możesz usunąć plik `ConsoleHost_history.txt` lub użyć cmdletu `Clear-History`.
  • Konfiguracja PSReadLine: Możesz dostosować zachowanie historii, np. maksymalną liczbę przechowywanych poleceń, używając polecenia `Set-PSReadLineOption`.
  • Lokalizacja transkrypcji: Zawsze określaj bezpieczną i odpowiednią lokalizację dla swoich transkrypcji za pomocą parametru `-Path` w `Start-Transcript`. Rozważ użycie zmiennych środowiskowych, aby ścieżka była dynamiczna.
  • Automatyzacja transkrypcji: W środowiskach korporacyjnych często stosuje się automatyczne uruchamianie transkrypcji dla wszystkich sesji PowerShell za pomocą zasad grupy (GPO) lub profili.

Najczęstsze pytania

Czy historia PowerShell przechowuje dane wrażliwe?

Tak, historia poleceń może zawierać dane wrażliwe, jeśli zostały one wprowadzone bezpośrednio w konsoli. Zawsze należy unikać wpisywania haseł i poufnych danych bezpośrednio w PowerShell.

Jakie są różnice między historią a transkrypcją?

Historia (ConsoleHost_history.txt) zapisuje tylko wprowadzone polecenia, natomiast transkrypcja (PowerShell_transcript_*.txt) zapisuje zarówno wprowadzone polecenia, jak i *cały* wynik, który pojawił się w konsoli.

Chociaż podejście do logowania sesji za pomocą transkrypcji PowerShell brzmi obiecująco dla celów audytu i dokumentacji, ma swoje ograniczenia. Nie będzie to skuteczne w sytuacjach, gdzie potrzebne jest głębokie, systemowe monitorowanie aktywności na poziomie procesów i wywołań API, zwłaszcza jeśli użytkownik ma możliwość obejścia standardowych metod logowania lub użycia innych narzędzi spoza PowerShell. W takich przypadkach konieczne są bardziej zaawansowane systemy EDR (Endpoint Detection and Response) lub SIEM (Security Information and Event Management).