How to record everything you do in Powershell

By Andrei Ungureanu - Last updated: Friday, June 9, 2017 - Save & Share - Leave a Comment

Comanda Start-Transcript poate fi folosita pentru a comanda pornirea unui transcript in sesiunea curenta powershell si este o metoda foarte buna de a loga toate actiunile pe care le faceti pe un sistem din powershell.

Pornita fara nici un parametru, comanda Start-Transcript va incepe logarea tuturor comenzilor si a outputlui din sesiunea curenta intr-un fisier text pe care il va salva in My Documents.

image

Dar indicat ar fi sa avem acest transcript activ de fiecare data si fara sa rulam noi de mana Start-Transcript. Iar aici intervin profilele din powershell.

Sunt sase tipuri de profile, toate descrise aici:

https://blogs.technet.microsoft.com/heyscriptingguy/2012/05/21/understanding-the-six-powershell-profiles/

Din ce avem acolo, cea mai simpla solutie ar fi sa folosim $PsHome\Profile.ps1 si de regula locatia corespunde cu C:\Windows\System32\WindowsPowerShell\v1.0\Profile.ps1.

By default nu exista nici un profil creat asa ca va trebui sa creati de mana fisierul Profile.ps1 si sa adaugati comanda Strat-Transcript:

Start-Transcript -path (“$env:temp\PowershellTranscript”+ (get-date -format ddmmyyHHmm)+”.txt”) -force  -noclobber

In exemplul de mai sus am setat locatia in folderul temp din profilul meu, dar atentie ca pentru fiecare sesiune nou deschisa de Powershell, se va crea un fisier nou si avand in vedere ca si output-ul comenzilor este capturat, in cazul in care exista foarte multa activitate vor fi generate destul de multe date. Pe sistemul meu de test, o singura deschidere de Powershell ISE genereaza un fisier de 135Kb (motivul … get-command, get-module la fiecare pornire a Powershell ISE).

Oricum solutia poate fi customizata foarte usor si este ideala pentru servere sau statii de lucru folosite pentru administrare.

Documentatia o gasiti aici:

https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.host/start-transcript

PS: Daca vreti sa aveti si un timestamp al comenzilor, exista paramentrul

-IncludeInvocationHeader

Posted in Scripting • Tags: Top Of Page

Write a comment