Powershells write-verbose不会创建输出变量(-ov)

时间:2015-05-26 13:23:39

标签: debugging powershell

不是很关键,但让我很头疼...... 我想把write-verbose的输出变成一个用于文档/调试的变量 它很好,powershel有一个自己的命令输出参数(请参阅help about_commonparameters) 但是在帮助中没有说明的是:什么write- *输出转到什么变量 所以我尝试并尝试了发现:

  • write-warning仅写入 -warningVariable
  • write-error仅写入 -errorVariable
  • write-output仅写入 -outVariable

write-verbose输出的位置是什么? 帮助说

  

此cmdlet支持常用参数:-Verbose,-Debug,-ErrorAction,-ErrorVariable,-OutBuffer和-OutVariable。

例如: write-verbose "test" -verbose -outvariable $a $ a

中没有

(同样适用于write-warning "test" -ev $b ......没有) 有任何想法吗?提前谢谢

3 个答案:

答案 0 :(得分:2)

Write-Verbose没有“输出”来写入OutVariable。但它确实会向详细信息流写入内容。

OutVariable包含输出到输出流的所有对象。

答案 1 :(得分:1)

如果您只想在变量中输出Write-Verbose,可以使用redirection

$var = Write-Verbose 'something' 4>&1

这会将详细流与成功输出流合并,可以在变量中捕获。

如果您需要在单独的变量中使用常规和详细输出,那么这不会起作用。据我所知,你必须将详细输出重定向到一个文件,并将文件读入一个变量。

PS C:\> function Foo { Write-Verbose 'foo'; Write-Output 'bar' }
PS C:\> $VerbosePreference = 'Continue'
PS C:\> Foo
VERBOSE: foo
bar
PS C:\> $o = Foo 4>'C:\temp\verbose.txt'
PS C:\> $v = Get-Content 'C:\temp\verbose.txt'
PS C:\> $o
bar
PS C:\> $v
foo

同样适用于警告,只有警告会转到第3行。

PS C:\> function Bar { Write-Warning 'foo'; Write-Output 'bar' }
PS C:\> $WarningPreference = 'Continue'
PS C:\> Bar
WARNING: foo
bar
PS C:\> $o = Bar 3>'C:\temp\warning.txt'
PS C:\> $w = Get-Content 'C:\temp\warning.txt'
PS C:\> $o
bar
PS C:\> $w
foo

PowerShell版本3引入了警告,详细和调试流的重定向。

答案 2 :(得分:1)

一个选项:

$VerbosePreference = 'continue'
Write-Verbose ($a = 'foo')
$a

VERBOSE: foo
foo