Use of Preference Variables to control behavior of streams

PowerShell Team

PSMDTAG:FAQ: Why don’t I see output when I use Write-Verbose and Write-Debug?
PSMDTAG:SHELL: Use of Preference Variables to control behavior of streams.

In Windows PowerShell, the WRITE-XXX cmdlets merely sends things to a Named stream.  You then have user-defined preferences for what to do when things appear on that stream.  Alex Angelopoulos provided the following function TEST-WRITER to highlight the issue:

function Test-Writer
    {
        ‘Will test Write -Host, -Output, -Verbose, -Warning, -Error.’
        Write-Host ‘Write-Host’
        Write-Output ‘Write-Output’
        Write-Verbose ‘Write-Verbose’
        Write-Warning ‘Write-Warning’
        Write-Error ‘Write-Error’
        ‘Done with test.’
    }

PS> test-writer
Will test Write -Host, -Output, -Verbose, -Warning, -Error.
Write-Host
Write-Output
WARNING: Write-Warning
Test-Writer : Write-Error
At line:1 char:11
+ test-writer <<<<
Done with test.

Notice the lack of “Write-Verbose” and “Write-Debug”

PS> dir variable:*preference

Name                           Value
—-                           —–
DebugPreference                SilentlyContinue
VerbosePreference              SilentlyContinue
ProgressPreference             Continue
ErrorActionPreference          Continue
WhatIfPreference               0
WarningPreference              Continue
ConfirmPreference              High

PS> $DebugPreference=$VerbosePreference=”Continue”
PS> test-writer
Will test Write -Host, -Output, -Verbose, -Warning, -Error.
Write-Host
Write-Output
VERBOSE: Write-Verbose
WARNING: Write-Warning
Test-Writer : Write-Error
At line:1 char:11
+ test-writer <<<<
Done with test.
PS>

Enjoy!


Jeffrey Snover [MSFT]
Windows PowerShell Architect
Visit the Windows PowerShell Team blog at:    http://blogs.msdn.com/PowerShell
Visit the Windows PowerShell ScriptCenter at:  http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx

0 comments

Discussion is closed.

Feedback usabilla icon