获取进程 (Get-Process)

若要获取在本地计算机上运行的进程,请运行不具有参数的 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

(0)
上一篇 2022年6月7日
下一篇 2022年6月7日

相关推荐

发表回复

登录后才能评论