Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Ghi đầu ra vào tệp nhật ký trong tập lệnh PowerShell

Bạn có thể sử dụng các tệp nhật ký văn bản đơn giản để kiểm soát việc chạy và theo dõi tất cả các hoạt động trong tập lệnh PowerShell của mình. Điều này rất hữu ích khi gỡ lỗi hoặc kiểm tra các hành động kịch bản. Trong bài viết này, chúng tôi sẽ chỉ ra một số cách để sử dụng ghi nhật ký trong tập lệnh PowerShell bằng cách ghi đầu ra vào tệp nhật ký văn bản.

Trong trường hợp đơn giản nhất, nếu bạn muốn ghi kết quả đầu ra của thông báo thông tin hoặc kết quả lệnh PowerShell vào tệp nhật ký văn bản, bạn có thể sử dụng một trong các định dạng sau để chuyển hướng đầu ra PS sang tệp văn bản:

Write-Output "Files are successfully created in $env:computername" >> C:\PS\Logs\TestLog.txt
Add-Content -Path C:\PS\Logs\TestLog.txt -Value "Files are successfully created in $env:computername"
"Files are successfully created in $env:computername" | Out-File -FilePath C:\PS\Logs\TestLog.txt –Append

Trong mọi trường hợp, các lệnh thêm một dòng mới vào tệp txt với văn bản bạn đã chỉ định.

Nếu bạn muốn ghi đè nội dung tệp nhật ký mỗi lần, hãy sử dụng Set-Content cmdlet.

Ghi đầu ra vào tệp nhật ký trong tập lệnh PowerShell

Hạn chế chính của phương pháp này là bạn không thể tìm ra khi nào một mục được ghi vào nhật ký (một sự kiện đã xảy ra). Bạn có thể thêm dấu thời gian hiện tại vào tệp nhật ký. Nó sẽ giúp xác định thời gian khi tập lệnh được chạy và một sự kiện cụ thể đã xảy ra.

Để thuận tiện hơn, bạn có thể tạo một hàm riêng biệt trong tập lệnh PowerShell để ghi dữ liệu nhận được vào tệp nhật ký và thêm dấu thời gian cho mỗi sự kiện.

Bạn có thể tạo một hàm như hình dưới đây:

$Logfile = "C:\PS\Logs\proc_$env:computername.log"
function WriteLog
{
Param ([string]$LogString)
$Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
$LogMessage = "$Stamp $LogString"
Add-content $LogFile -value $LogMessage
}

Sau đó, gọi WriteLog chức năng nếu bạn muốn ghi lại một cái gì đó.

WriteLog "The script is run"
WriteLog "Calculating…."
Start-Sleep 20
WriteLog "The script is successfully executed"

Bây giờ bạn có thể xem thời gian của mỗi mục nhập trong tệp nhật ký.

Ghi đầu ra vào tệp nhật ký trong tập lệnh PowerShell

Bạn có thể thay thế Write-Host cuộc gọi với LogWrite những cái trong tập lệnh của bạn.

PowerShell có tính năng phiên âm tích hợp để lưu tất cả các lệnh và kết quả đầu ra được hiển thị trong bảng điều khiển PS vào tệp nhật ký văn bản.

Để ghi lại phiên PowerShell hiện tại của bạn, hãy chọn Bản ghi bắt đầu lệnh ghép ngắn được sử dụng.

Sau khi chạy lệnh, một thông báo xuất hiện hiển thị tệp đầu ra của tất cả các lệnh được ghi vào. Theo mặc định, tệp nhật ký được đặt trong hồ sơ người dùng hiện tại:

Transcript started, output file is C:\Users\user\Documents\PowerShell_transcript.DESKTOP-P2FHTKQ.+IzDgZiN.20210908163729.txt
Bạn có thể chỉ định đường dẫn đến tệp văn bản như sau:

Start-Transcript -Append C:\PS\Logs\PSScriptLog.txt

–Đăng ký tùy chọn cho biết rằng các phiên mới sẽ được ghi vào cuối tệp (mà không ghi đè lên nó).

Chạy một số lệnh PowerShell xuất kết quả ra bảng điều khiển. Ví dụ:hãy hiển thị danh sách các quy trình, dịch vụ đang chạy và trạng thái sao chép AD:

Get-Process| where-object {$_.WorkingSet -GT 500000*1024}|select processname,@{l="Used RAM(MB)"; e={$_.workingset / 1mb}} |sort "Used RAM(MB)" –Descending
Get-Service | Where-Object {$_.status -eq 'Running'}
Get-ADReplicationFailure -Target mun-dc01

Dừng ghi nhật ký cho phiên PowerShell hiện tại:

Stop-Transcript

Sau đó, mở tệp nhật ký bản ghi.

Ghi đầu ra vào tệp nhật ký trong tập lệnh PowerShell

Như bạn có thể thấy, nhật ký hiển thị toàn bộ lịch sử của các lệnh PowerShell đã được chạy trong bảng điều khiển và tất cả đầu ra.

Tất cả các lỗi và cảnh báo cũng được ghi lại, và nó cực kỳ thuận tiện khi gỡ lỗi các tập lệnh PowerShell phức tạp.

Bạn có thể sử dụng Start-TranscriptStop-Transcript các lệnh ghép ngắn trong tập lệnh PowerShell của bạn để ghi lại tất cả các hành động và kết quả đầu ra.

Sử dụng tùy chọn Chính sách nhóm Bật phiên âm PowerShell (Cấu hình máy tính -> Mẫu quản trị -> Thành phần Windows -> Windows PowerShell), bạn có thể bật ghi nhật ký tự động tất cả các lệnh PowerShell đang chạy và xuất trên máy tính. Sau khi cập nhật cài đặt GPO trên máy tính, một tệp nhật ký văn bản riêng biệt sẽ được tạo cho mỗi quá trình powershell.exe đang chạy và tất cả các lệnh PS và đầu ra của chúng sẽ được ghi lại.
Ghi đầu ra vào tệp nhật ký trong tập lệnh PowerShell