2010-11-05 370 views
5

指挥宽度,我想了很多数据Write-Verbose的out文件。这是我如何做的。写详细输出不换行PowerShell中

Start-Transcript -Path $TargetDir\RunUnitTests.log -Width 1000000 
Write-Verbose "five million character lines and stuff" 

这很好,除了输出自动包装到控制台的标准宽度,这使得日志看起来绝对可怕。

我发现了一个解决方案在这里死链接删除 ,但它是如此投入和复杂的,我不希望在我的剧本,只是抛出此评论#Thar be dragons以下。

有没有更好的方法来做到这一点?

+0

为了防止缠绕在_all_详细输出,相关的问题,不只是从显式调用'写Verbose',请参阅[这个问题](http://stackoverflow.com/q/41504786/45375) 。 – mklement0 2017-01-08 13:02:50

回答

5

这是基于Write-Host一个非常简单的解决方法不存在这样的问题。在会议开始时安装/点源更换默认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' 
    } 
} 

然后这个工程需要:

$VerbosePreference = 'Continue' 
Start-Transcript -Path .\RunUnitTests.log 
Write-Verbose ("verbose writes five million character lines and stuff. " * 20) 

那就是:它考虑到$VerbosePreference,将其写入主机以黄色显示,成绩单输出未被包装,并且仍标记为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 
********************** 
+2

你可能或许也想装点支持流水线的参数'[参数(位置= 0,强制= $真实,ValueFromPipeline = $真)]' – 2013-10-14 09:05:40