2010-11-05 26 views
5

Tôi muốn Write-Verbose nhiều dữ liệu vào một tệp. Đây là cách tôi đang làm nó.Đầu ra ghi-Verbose không bao bọc chiều rộng lệnh trong Powershell

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

Điều này làm việc tuyệt vời, ngoại trừ đầu ra được tự động đưa vào chiều rộng chuẩn của bảng điều khiển, điều này làm cho nhật ký trông hoàn toàn khủng khiếp.

Tôi tìm thấy một giải pháp ở đây link chết loại bỏ , nhưng nó rất liên quan và phức tạp mà tôi không muốn chỉ ném này trong kịch bản của tôi dưới đây bình luận #Thar be dragons.

Có cách nào tốt hơn để thực hiện việc này không?

+0

Đối với vấn đề liên quan ngăn chặn gói trong đầu ra dài dòng _all_, không chỉ từ lời gọi rõ ràng đến 'Viết-Verbose', xem [câu hỏi này] (http://stackoverflow.com/q/41504786/45375) . – mklement0

Trả lời

5

Đây là giải pháp rất đơn giản dựa trên Write-Host không có vấn đề như vậy. Vào đầu phiên giao dịch cài đặt/dot-nguồn thay thế mặc định 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' 
    } 
} 

Sau đó làm việc này khi cần thiết:

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

Đó là: nó sẽ đưa vào tài khoản $VerbosePreference, nó ghi vào máy chủ lưu trữ màu vàng, bản ghi đầu ra không được bao bọc và nó vẫn được đánh dấu 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

Bạn có lẽ cũng muốn trang trí tham số để hỗ trợ pipelining '[Parameter (Position = 0, Mandatory = $ true, ValueFromPipeline = $ true)]' –

Các vấn đề liên quan