若要获取在本地计算机上运行的进程,请运行不具有参数的 Get-Process。
你可以通过指定其进程名称或进程 ID 来获取特定进程。 以下命令将获取空闲进程:
PS C:/Users/maxsu> Get-Process -id 0
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
0 0 60 8 0 0 Idle
尽管某些情况下 cmdlet 不会返回任何数据很正常,但当你按其 ProcessId 指定一个进程时,如果未找到任何匹配项,Get-Process 将生成一个错误,因为通常的目的是检索一个已知的正在运行的进程。 如果按该 ID 找不到进程,则很可能该 ID 不正确或相关进程已退出:
PS C:/Users/maxsu> Get-Process -id 9999
Get-Process : 找不到进程标识符为 9999 的进程。
所在位置 行:1 字符: 1
+ Get-Process -id 9999
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (9999:Int32) [Get-Process], ProcessCommandException
+ FullyQualifiedErrorId : NoProcessFoundForGivenId,Microsoft.PowerShell.Commands.GetProcessCommand
可以使用 Get-Process cmdlet 的 Name 参数来基于进程名称指定进程的子集。 Name 参数可以采用多个名称(在列表中以逗号分隔),并且支持使用通配符,因此,你可以键入名称模式。
例如,以下命令将获取名称以“win”开头的进程。
PS C:/Users/maxsu> Get-Process -Name win*
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
708 27 25412 48268 16.64 19708 12 WindowsInternal.ComposableShell.Experiences.TextInput.Inpu...
180 11 1712 3604 828 0 wininit
274 13 2696 9864 9692 12 winlogon
由于 .NET System.Diagnostics.Process 类是 Windows PowerShell 进程的基础,因此它遵循 System.Diagnostics.Process 使用的某些约定。 其中一个约定是可执行文件的进程名从不在可执行文件名的末尾包含“.exe”。
Get-Process 还接受 Name 参数的多个值。
PS C:/Users/maxsu> Get-Process -Name exp*,power*
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
2660 124 117892 234344 267.38 19080 12 explorer
660 31 64944 78172 0.92 9536 12 powershell
可以使用 Get-Process 的 ComputerName 参数获取远程计算机上的进程。 例如,以下命令将获取本地计算机(表示为“localhost”)和两台远程计算机上的 PowerShell 进程。
PS> Get-Process -Name PowerShell -ComputerName localhost, Server01, Server02
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
258 8 29772 38636 130 3700 powershell
398 24 75988 76800 572 5816 powershell
605 9 30668 29800 155 7.11 3052 powershell
计算机名在此显示中不可见,但是它们存储在 Get-Process 返回的进程对象的 MachineName 属性中。 下面的命令使用 Format-Table cmdlet 显示进程对象的进程 ID、ProcessName 和 MachineName (ComputerName) 属性。
PS> Get-Process -Name PowerShell -ComputerName localhost, Server01, Server01 |
Format-Table -Property ID, ProcessName, MachineName
Id ProcessName MachineName
-- ----------- -----------
3700 powershell Server01
3052 powershell Server02
5816 powershell localhost
这一更为复杂的命令将 MachineName 属性添加到标准 Get-Process 显示中。
PS> Get-Process powershell -ComputerName localhost, Server01, Server02 |
Format-Table -Property Handles,
@{Label="NPM(K)";Expression={[int]($_.NPM/1024)}},
@{Label="PM(K)";Expression={[int]($_.PM/1024)}},
@{Label="WS(K)";Expression={[int]($_.WS/1024)}},
@{Label="VM(M)";Expression={[int]($_.VM/1MB)}},
@{Label="CPU(s)";Expression={if ($_.CPU -ne $()){$_.CPU.ToString("N")}}},
Id, ProcessName, MachineName -auto
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName MachineName
------- ------ ----- ----- ----- ------ -- ----------- -----------
258 8 29772 38636 130 3700 powershell Server01
398 24 75988 76800 572 5816 powershell localhost
605 9 30668 29800 155 7.11 3052 powershell Server02
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/266806.html