Creating a record of all your powershell commands
You can create a transcript of everything you do in powershell via "Start-Transcript"
It will return output such as:
> start-transcript
Transcript started, output file is C:\Users\Jack\Documents\PowerShell_transcript.20160526143256.txt
The file will contain every command you type.
And when you're done, stop recording with
> stop-transcript
Transcript stopped, output file is C:\Users\Jack\Documents\PowerShell_transcript.20160526143256.txt
And if you try to Get-Content of that file, before stopping the recording, it will open a wormhole in space and time, and the output becomes the input.
Get-Content C:\Users\Jack\Documents\PowerShell_transcript.20160526143256.txt
...until your hard drive is full, or some other resources is exhausted.
To do all of this in one line try the following:
stop-transcript; start-transcript | % { $tfile = $_.Replace("Transcript started, output file is ","") }; cat $tfile; stop-transcript
To get the location of the current or most recent transcript file:
function Get-TranscriptFilePath {
try {
$externalHost = $host.gettype().getproperty("ExternalHost",[reflection.bindingflags]"nonpublic,instance").getvalue($host, @())
$externalHost.gettype().getfield("transcriptFileName", "nonpublic,instance").getvalue($externalHost)
} catch {
Write-Warning "This host does not support transcription."
}
}
...allegedly. Though so far that only works on half my machines.