Bộ đếm hiệu suất tốt hơn với PowerShell
Tôi muốn cho bạn biết về một bổ sung khác cho bản phát hành mới nhất của mô-đun PSScriptTools. Đây là điều tôi đã viết trước đây nhưng tôi quyết định thêm chức năng này vào mô-đun. Tôi hy vọng bạn sẽ thấy cách làm việc với bộ đếm hiệu suất trở nên dễ dàng hơn nhiều. Và nó hoạt động trong Windows PowerShell và PowerShell 7.x.
Bộ đếm
Chúng tôi đã có lệnh ghép ngắn Get-Counter trong PowerShell từ rất lâu. Tuy nhiên, tôi luôn gặp một vấn đề nhỏ với cách nó hiển thị kết quả.
Lệnh ghi một đối tượng thú vị vào đường ống.
Tóm lại, PowerShell đang sử dụng tệp định dạng tùy chỉnh để hiển thị kết quả ở chế độ xem dễ đọc. Nhưng nếu bạn muốn làm điều gì đó với đầu ra như xuất sang tệp csv, bạn cần phải thực hiện nhiều bước.
Get-Counter | Select-Object -expand Countersamples | Select-Object Timestamp,Path,InstanceName,CookedValue,@{Name="Computername";Expression={$_.path.split("\")[2].toUpper()}} | Export-Csv c:\work\counters.csvĐiều này chắc chắn không trực quan. Tôi muốn một lệnh ghép ngắn bộ đếm hiệu suất ghi dữ liệu có cấu trúc “tốt hơn” vào đường dẫn.
Get-MyCounter
Mô-đun PSScriptTools hiện bao gồm phiên bản cập nhật của chức năng Get-MyCounter của tôi. Hàm này là một “trình bao bọc” xung quanh Get-Counter để ghi các đối tượng có cấu trúc đơn giản vào đường dẫn. Bạn có thể sử dụng nó gần giống như Get=Counter.
Đối tượng tùy chỉnh có tệp định dạng riêng. Nhưng loại đối tượng rất dễ sử dụng.
Bây giờ, tôi có một cách dễ dàng hơn nhiều để làm việc với dữ liệu bộ đếm hiệu suất.
Trên thực tế, tôi có thể lấy bộ đếm từ Get-Counter và chuyển chúng sang Get-MyCounter.
Get-MyCounter cũng hỗ trợ lấy mẫu.
get-counter -list system | get-mycounter -MaxSamples 10 -SampleInterval 2Hoặc bạn có thể sử dụng ConvertTo-WPFGrid, cũng từ mô-đun PSScriptTools và để nó xử lý việc lấy mẫu.
$counters = (get-counter -list system).counter | where {$_ -match "file"}
Get-MyCounter -Counter $counters -ComputerName prospero,thinkp1 |
Select-Object * -exclude Instance |
ConvertTo-WPFGrid -Title "System Performance" -Timeout 6 -refresh -UseLocalVariable countersBiểu mẫu sẽ làm mới cứ sau 6 giây cho đến khi tôi đóng nó. Biểu mẫu cũng chạy trong không gian chạy riêng của nó nên không bị chặn ngay lập tức.
Tôi hy vọng bạn sẽ dùng thử Get-MyCounter và cho tôi biết suy nghĩ của bạn.






