How to redirect the output of a PowerShell to a file during its execution

Maybe Start-Transcript would work for you. First stop it if it’s already running, then start it, and stop it when done. $ErrorActionPreference=”SilentlyContinue” Stop-Transcript | out-null $ErrorActionPreference = “Continue” Start-Transcript -path C:\output.txt -append # Do some stuff Stop-Transcript You can also have this running while working on stuff and have it saving your command line sessions … Read more

How to tell PowerShell to wait for each command to end before starting the next?

Normally, for internal commands PowerShell does wait before starting the next command. One exception to this rule is external Windows subsystem based EXE. The first trick is to pipeline to Out-Null like so: Notepad.exe | Out-Null PowerShell will wait until the Notepad.exe process has been exited before continuing. That is nifty but kind of subtle … Read more

How do I get only directories using Get-ChildItem?

For PowerShell 3.0 and greater: Get-ChildItem -Directory You can also use the aliases dir, ls, and gci For PowerShell versions less than 3.0: The FileInfo object returned by Get-ChildItem has a “base” property, PSIsContainer. You want to select only those items. Get-ChildItem -Recurse | ?{ $_.PSIsContainer } If you want the raw string names of … Read more

Timing a command’s execution in PowerShell

Yup. Measure-Command { .\do_something.ps1 } Note that one minor downside of Measure-Command is that you see no stdout output. [Update, thanks to @JasonMArcher] You can fix that by piping the command output to some commandlet that writes to the host, e.g. Out-Default so it becomes: Measure-Command { .\do_something.ps1 | Out-Default } Another way to see … Read more