【问题标题】:Powershells write-verbose creates no outputvariable (-ov)Powershell write-verbose 不创建输出变量(-ov)
【发布时间】:2015-05-27 04:07:22
【问题描述】:

不重要但让我头疼... 我希望将 write-verbose 的输出转换为用于文档/调试的变量。
它很好,powershel 有一个自己的命令输出参数(参见帮助 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... 相同) 有任何想法吗?提前致谢

【问题讨论】:

    标签: debugging powershell


    【解决方案1】:

    Write-Verbose 没有可写入 OutVariable 的“输出”。不过,它确实会将内容写入详细流。

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

    【讨论】:

    • 感谢您的解释。无论如何,这令人困惑 - 为什么在没有写入输出流的情况下存在 outvariable 参数。所以没有选项来捕获详细的输出?比如“告诉我你做了什么,同时把它写入日志文件”
    • 通用参数没有“粒度”可用性。要么你拥有所有这些,要么你没有。您可以使用重定向将详细输出与输出流合并,或者根据需要将其发送到文件。
    【解决方案2】:

    一个选项:

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

    【讨论】:

      【解决方案3】:

      如果您只想在变量中输出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 引入了警告、详细和调试流的重定向。

      【讨论】:

      • 那很有趣,我不知道 powershell 中的_redirection(带有 3 .. 5 ),感谢您的解释和帮助链接
      猜你喜欢
      • 1970-01-01
      • 2013-04-30
      • 2021-05-27
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多