Câu trả lời:
Có lẽ Start-Transcript
sẽ làm việc cho bạn. Trước tiên hãy dừng nó nếu nó đã chạy, sau đó khởi động nó và dừng nó khi hoàn tất.
$ ErrorActionPreference = "SilentlyContinue" Bảng điểm dừng | không có giá trị $ ErrorActionPreference = "Tiếp tục" Bắt đầu-Transcript -path C: \ output.txt -append # Làm một số thứ Bảng điểm dừng
Bạn cũng có thể chạy cái này trong khi làm việc trên các công cụ và để nó lưu các phiên dòng lệnh của bạn để tham khảo sau này.
Nếu bạn muốn loại bỏ hoàn toàn lỗi khi cố gắng dừng bản ghi không phiên mã, bạn có thể thực hiện việc này:
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue" # or "Stop"
Microsoft đã thông báo trên trang web Kết nối của Powershell (2012/02/15 lúc 4:40 chiều) rằng trong phiên bản 3.0, họ đã mở rộng chuyển hướng như một giải pháp cho vấn đề này.
In PowerShell 3.0, we've extended output redirection to include the following streams:
Pipeline (1)
Error (2)
Warning (3)
Verbose (4)
Debug (5)
All (*)
We still use the same operators
> Redirect to a file and replace contents
>> Redirect to a file and append to existing content
>&1 Merge with pipeline output
Xem bài viết trợ giúp "about_Redirection" để biết chi tiết và ví dụ.
help about_Redirection
Sử dụng:
Write "Stuff to write" | Out-File Outputfile.txt -Append
Tôi lấy nó bạn có thể sửa đổi MyScript.ps1
. Sau đó cố gắng thay đổi nó như vậy:
$(
Here is your current script
) *>&1 > output.txt
Tôi vừa thử điều này với PowerShell 3. Bạn có thể sử dụng tất cả các tùy chọn chuyển hướng như trong câu trả lời của Nathan Hartley .
*>&1 | Out-File $log -Encoding ascii -Append -Width 132
nhưng Powershell thực sự xấu xí nếu bạn cần kiểm soát chính xác đầu ra.
powershell ".\MyScript.ps1" > test.log
Bạn có thể muốn xem qua cmdlet Tee-Object . Bạn có thể chuyển đầu ra sang Tee và nó sẽ ghi vào đường ống và cũng vào một tệp
Nếu bạn muốn chuyển hướng thẳng tất cả đầu ra sang một tệp, hãy thử sử dụng *>>
:
# You'll receive standard output for the first command, and an error from the second command.
mkdir c:\temp -force *>> c:\my.log ;
mkdir c:\temp *>> c:\my.log ;
Vì đây là một chuyển hướng thẳng đến tập tin, nó sẽ không xuất ra bàn điều khiển (thường hữu ích). Nếu bạn muốn đầu ra giao diện điều khiển, kết hợp tất cả đầu ra với *&>1
, và sau đó đặt ống với Tee-Object
:
mkdir c:\temp -force *>&1 | Tee-Object -Append -FilePath c:\my.log ;
mkdir c:\temp *>&1 | Tee-Object -Append -FilePath c:\my.log ;
# Shorter aliased version
mkdir c:\temp *>&1 | tee -Append c:\my.log ;
Tôi tin rằng các kỹ thuật này được hỗ trợ trong PowerShell 3.0 trở lên; Tôi đang thử nghiệm trên PowerShell 5.0.
Nếu bạn muốn làm điều đó từ dòng lệnh và không được tích hợp vào chính tập lệnh, hãy sử dụng:
.\myscript.ps1 | Out-File c:\output.csv
Để nhúng phần này vào tập lệnh của bạn, bạn có thể làm như thế này:
Write-Output $server.name | Out-File '(Your Path)\Servers.txt' -Append
Điều đó sẽ làm các trick.