当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 管理 Windows 进程

作者:精品下载站 日期:2024-12-14 23:03:00 浏览:14 分类:玩电脑

使用 PowerShell 管理 Windows 进程


PowerShell 具有许多功能来管理本地或远程计算机上的进程。使用 PowerShell,您可以获取正在运行的进程列表、暂停挂起的进程、通过 Windows 标题查找进程、以隐藏或交互模式运行新进程等。

您可以在 Windows 10 中显示可用进程管理 cmdlet 的列表,如下所示:

Get-Command -Noun Process

[玩转系统] 使用 PowerShell 管理 Windows 进程

  • Get-Process - 获取正在运行的 Windows 进程列表;

  • Start-Process - 启动一个进程/程序;

  • Stop-Process - 强行停止(终止)进程;

  • Debug-Process - 调试进程;

  • 等待进程 - 等待进程结束。

Get-Process:获取正在运行的进程列表

Get-Process cmdlet 显示本地计算机上运行的进程列表。

[玩转系统] 使用 PowerShell 管理 Windows 进程

默认情况下,显示正在运行的进程的这些属性:

  • 句柄 - 该进程打开的输入输出文件描述符(句柄)的数量;

  • NPM(K) - 是非分页内存(非分页池)。这是从未在磁盘上分页的进程数据的大小(以 KB 为单位);

  • PM(K) - 可分页的进程内存大小;

  • WS(K) - 进程(工作集)使用的物理内存大小(以KB为单位);

  • CPU(s) ——进程使用的CPU时间(计算所有CPU上的时间);

  • ID - 唯一的进程标识符;

  • SI(会话 ID)- 是进程会话 ID(0 表示为所有会话运行,1 - 为第一个登录用户运行,2 - 为第二个登录用户运行,等等);

  • 进程名称

列出多个进程的所有属性:

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

您只能显示特定的进程属性,例如名称 (

ProcessName

)、开始时间(

StartTime

),进程窗口标题(

MainWindowTitle

),可执行文件名(

Path

)和开发者名称(

Company

):

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

[玩转系统] 使用 PowerShell 管理 Windows 进程

使用 GUI 显示正在运行的用户进程列表(不会显示后台和系统进程):

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

[玩转系统] 使用 PowerShell 管理 Windows 进程

使用 IncludeUserName 选项,您可以显示已启动该进程的用户名(所有者):

Get-Process -Name winword -IncludeUserName

使用

Where-Object

,您可以根据某些标准选择流程。例如,让我们显示使用超过 300 MB RAM 的所有进程,按内存使用量降序对它们进行排序,并以 MB 而不是 KB 为单位显示内存大小:

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

[玩转系统] 使用 PowerShell 管理 Windows 进程

正如我们之前所说,CPU 参数中的 Get-Process cmdlet 包含特定进程使用的处理器时间(以秒为单位)。要显示进程使用的 CPU 百分比(类似于任务管理器),请使用以下函数:

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

[玩转系统] 使用 PowerShell 管理 Windows 进程

要查找挂起的进程(未响应),请运行以下命令:

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

启动进程、停止进程:如何使用 PowerShell 启动或停止进程

要使用 PowerShell 启动新进程,请使用以下命令:

Start-Process -FilePath notepad

如果没有可执行文件

$env:path

环境变量,指定文件的完整路径:

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

您可以运行程序并向其传递参数:

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

使用WindowStyle选项,您可以设置进程窗口启动模式(正常、最小化、最大化、隐藏)。例如,要在最大化窗口中运行程序并等待进程结束,请运行以下命令:

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

使用 Stop-Process cmdlet,您可以停止任何进程。例如,要关闭所有正在运行的记事本进程:

Stop-Process -Name notepad

默认情况下,系统不会提示您确认终止进程。所有满足指定条件的进程都将停止。为了能够确认停止进程,请添加-Confirm选项:

Stop-Process -Name notepad.exe -Confirm

[玩转系统] 使用 PowerShell 管理 Windows 进程

另外,您可以按如下方式终止进程:

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

通过 PowerShell,您可以强制停止所有不响应 Windows 进程管理器的应用程序:

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

使用 PowerShell,您可以自动重新启动挂起或关闭的进程。

使用 PowerShell 管理远程计算机上的进程

您可以使用

ComputerName

Get-Process cmdlet 选项,以便管理远程计算机上的进程(必须启用并配置 WinRM)。

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

我们使用内置的 Get-Process 功能来管理远程计算机上的进程。 PowerShell 远程处理功能可用于

Invoke-Command

Enter-PSSession

此处不涉及 cmdlet。

如果要终止远程计算机上的进程,请注意 Stop-Process cmdlet 没有 -ComputerName 参数。要停止远程计算机上的进程,您可以使用以下 PowerShell 代码:

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

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯