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

Quản lý các quy trình của Windows với PowerShell

PowerShell có rất nhiều tính năng để quản lý các quy trình trên máy tính cục bộ hoặc máy tính từ xa. Sử dụng PowerShell, bạn có thể nhận danh sách các quy trình đang chạy, tạm dừng quy trình bị treo, tìm quy trình theo tiêu đề cửa sổ, chạy quy trình mới ở chế độ ẩn hoặc tương tác, v.v.

Bạn có thể hiển thị danh sách các lệnh ghép ngắn quản lý quy trình có sẵn trong Windows 10 như sau:

Get-Command –Noun Process

Quản lý các quy trình của Windows với PowerShell

  • Nhận quá trình - nhận danh sách các quy trình Windows đang chạy;
  • Quy trình bắt đầu - bắt đầu một quy trình / chương trình;
  • Dừng quá trình - buộc dừng (giết) quá trình;
  • Quy trình gỡ lỗi - gỡ lỗi một quy trình;
  • Quá trình Chờ - đợi cho đến khi quá trình kết thúc.

Get-Process:Lấy danh sách các quá trình đang chạy

Lệnh ghép ngắn Get-Process hiển thị danh sách các tiến trình đang chạy trên máy tính cục bộ.

Quản lý các quy trình của Windows với PowerShell

Theo mặc định, các thuộc tính này của các quy trình đang chạy được hiển thị:

  • Xử lý - số lượng bộ mô tả tệp đầu vào-đầu ra (xử lý) được mở bởi quá trình này;
  • NPM (K) - là vùng nhớ không phân trang (non-paged pool). Đây là kích thước của dữ liệu quy trình (tính bằng KB) không bao giờ được phân trang trên đĩa;
  • CH (K) - kích thước của bộ nhớ tiến trình có thể được phân trang;
  • WS (K) - kích thước của bộ nhớ vật lý (tính bằng KB) được sử dụng bởi quá trình (Bộ làm việc);
  • (Các) CPU - thời gian CPU được sử dụng bởi quá trình (thời gian trên tất cả các CPU được tính);
  • ID - mã định danh quy trình duy nhất;
  • SI (Session ID) - là ID phiên của quá trình (0 có nghĩa là chạy cho tất cả các phiên, 1- chạy cho người dùng đăng nhập đầu tiên, 2 - chạy cho người dùng đăng nhập thứ hai, v.v.);
  • ProcessName

Để liệt kê tất cả các thuộc tính của nhiều quy trình:

Get-Process cmd,excel,notep* | Format-List *

Bạn chỉ có thể hiển thị các thuộc tính quy trình cụ thể, chẳng hạn như tên (ProcessName ), thời gian bắt đầu (StartTime ), tiêu đề cửa sổ quy trình (MainWindowTitle ), tên tệp thực thi (Path ) và tên nhà phát triển (Company ):

Get-Process winword, notep* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ft

Quản lý các quy trình của Windows với PowerShell

Để hiển thị danh sách các quy trình người dùng đang chạy với GUI (các quy trình nền và hệ thống sẽ không được hiển thị):

Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle

Quản lý các quy trình của Windows với PowerShell

Sử dụng Tên người dùng tùy chọn, bạn có thể hiển thị tên người dùng (chủ sở hữu) đã bắt đầu quá trình:

Get-Process -Name winword -IncludeUserName

Sử dụng Where-Object , bạn có thể chọn các quy trình theo một số tiêu chí. Ví dụ:hãy hiển thị tất cả các quy trình sử dụng trên 300 MB RAM, sắp xếp chúng theo thứ tự giảm dần theo mức sử dụng bộ nhớ và hiển thị kích thước bộ nhớ bằng MB thay vì KB:

Get-Process| where-object {$_.WorkingSet -GT 300000*1024}|select processname,@{l="Used RAM(MB)"; e={$_.workingset / 1mb}} |sort "Used RAM(MB)" –Descending

Quản lý các quy trình của Windows với PowerShell

Như chúng ta đã nói trước đó, lệnh ghép ngắn Get-Process trong tham số CPU chứa thời gian bộ xử lý được quy trình cụ thể sử dụng tính bằng giây. Để hiển thị phần trăm CPU được sử dụng bởi các quy trình (tương tự như Trình quản lý tác vụ), hãy sử dụng chức năng này:

function Get-CPUUsagePercent
{
$CPUPercent = @{
Name = 'CPUPercent'
Expression = {
$TotalSec = (New-TimeSpan -Start $_.StartTime).TotalSeconds
[Math]::Round( ($_.CPU * 100 / $TotalSec), 2)
}
}
Get-Process | Select-Object -Property Name, $CPUPercent, Description | Sort-Object -Property CPUPercent -Descending | Select-Object -First 20
}
Get-CPUUsagePercent

Quản lý các quy trình của Windows với PowerShell

Để tìm các tiến trình bị treo (không phản hồi), hãy chạy lệnh sau:

Get-Process | where-object {$_.Responding -eq $false}

Start-Process, Stop-Process:Cách bắt đầu hoặc dừng quá trình với PowerShell

Để bắt đầu một quy trình mới bằng PowerShell, lệnh này được sử dụng:

Start-Process -FilePath notepad

Nếu không có tệp thực thi nào trong $env:path biến môi trường, chỉ định đường dẫn đầy đủ đến tệp:

Start-Process -FilePath 'C:\distr\app.exe'

Bạn có thể chạy một chương trình và chuyển các đối số cho nó:

Start-Process -FilePath ping -ArgumentList "-n 10 10.1.56.21"

Sử dụng WindowStyle tùy chọn, bạn có thể đặt chế độ bắt đầu cửa sổ quy trình (bình thường, thu nhỏ, tối đa, ẩn). Ví dụ:để chạy một chương trình trong cửa sổ được phóng to và đợi cho đến khi quá trình kết thúc, hãy chạy lệnh sau:

Start-Process -FilePath tracert -ArgumentList "10.1.56.21" –wait -windowstyle Maximized

Sử dụng lệnh ghép ngắn Stop-Process, bạn có thể dừng bất kỳ quá trình nào. Ví dụ:để đóng tất cả các quy trình notepad đang chạy:

Stop-Process -Name notepad

Theo mặc định, bạn không được nhắc xác nhận việc hủy một quy trình. Tất cả các quá trình đáp ứng các tiêu chí đã chỉ định sẽ bị dừng lại. Để có thể xác nhận việc dừng các quá trình, hãy thêm mục –Xác nhận tùy chọn:

Stop-Process -Name notepad.exe -Confirm

Quản lý các quy trình của Windows với PowerShell

Ngoài ra, bạn có thể kết thúc một quá trình như sau:

(Get-Process -Name cmd).Kill()

Từ PowerShell, bạn có thể buộc dừng tất cả các ứng dụng không phản hồi với Trình quản lý quy trình của Windows:

Get-Process | where-object {$_.Responding -eq $false}| Stop-Process

Sử dụng PowerShell, bạn có thể tự động khởi động lại quá trình bị treo hoặc bị đóng.

Quản lý quy trình trên máy tính từ xa bằng PowerShell

Bạn có thể sử dụng ComputerName tùy chọn lệnh ghép ngắn Get-Process để quản lý các quy trình trên máy tính từ xa (WinRM phải được kích hoạt và định cấu hình).

Get-Process -ComputerName srv01, srv02, srv03| Format-Table -Property ProcessName, ID, MachineName

Chúng tôi xử lý các tính năng Get-Process được tích hợp sẵn để quản lý các quy trình trên máy tính từ xa. Các tính năng của PowerShell Remoting khả dụng trong Invoke-CommandEnter-PSSession cmdlet không được đề cập ở đây.

Nếu bạn muốn hủy một quy trình trên một máy tính từ xa, hãy lưu ý rằng lệnh ghép ngắn Stop-Process không có tham số –ComputerName. Để dừng quá trình trên máy tính từ xa, bạn có thể sử dụng mã PowerShell sau:

$RemoteProcess = Get-Process -Name cmd -ComputerName srv01
Stop-Process -InputObject $RemoteProcess