Reputation: 1167
I'd like to Write-Verbose
a lot of data to an out file. Here's how I'm doing it.
Start-Transcript -Path $TargetDir\RunUnitTests.log -Width 1000000
Write-Verbose "five million character lines and stuff"
This works great, except that the output is auto wrapped to the standard width of a console, this makes the log look absolutely terrible.
I found a solution heredead link removed
, but it's so involved and complicated that I don't want to just throw this in my script below a comment #Thar be dragons
.
Is there a better way to do this?
Upvotes: 6
Views: 3810
Reputation: 42063
Here is a very simple workaround based on Write-Host
which does not have such a problem. In the beginning of the session install/dot-source the replacement of the default Write-Verbose
:
function global:Write-Verbose
(
[string]
$Message
)
{
# check $VerbosePreference variable
if ($VerbosePreference -ne 'SilentlyContinue') {
# do this via Write-Host
Write-Host "VERBOSE: $Message" -ForegroundColor 'Yellow'
}
}
Then this works as needed:
$VerbosePreference = 'Continue'
Start-Transcript -Path .\RunUnitTests.log
Write-Verbose ("verbose writes five million character lines and stuff. " * 20)
That is: it takes into account $VerbosePreference
, it writes to host in yellow, transcript output is not wrapped and it is still marked VERBOSE.
**********************
Windows PowerShell Transcript Start
Start time: 20101105055855
**********************
Transcript started, output file is .\RunUnitTests.log
VERBOSE: verbose writes ... <long line text> ... and stuff.
**********************
Windows PowerShell Transcript End
End time: 20101105055855
**********************
Upvotes: 5