Powershell-带参数的进程列表



我正试图找到一种方法来列出进程;

  • PID
  • 进程名称
  • CPU使用情况
  • 执行路径
  • 端口号(TCP和UDP(
  • 说明

并将其导出到csv文件中。

有可能吗?如果不是,该列表是否可以被配置为将进程名称搜索为";比如process_name">

例如,列出多个进程名称(如我所指定(和其他参数。

到目前为止,我已经找到了这个,但它不包括端口号;

Get-Process | select id, processname,cpu,path,description | where {$_.path -like "*postgre*"} | Export-Csv -Path C:tempprocess.csv -Delimiter ',' -NoTypeInformation

谢谢。

这是我拼凑的一个新函数,名为Get-ProcessPlus。它支持使用进程名称或进程id或不使用任何参数进行调用(将返回所有进程(。

输出示例:

ProcessName   : NVIDIA Web Helper
Id            : 10184
Description   : NVIDIA Web Helper Service
Path          : C:Program Files (x86)NVIDIA CorporationNvNodeNVIDIA Web Helper.exe
CPU usage (s) : 0,59375
TCP Addresses : 127.0.0.1
TCP Ports     : 13549
UDP Addresses : 127.0.0.1
UDP Ports     : 10010

在ISE或VSCode中运行此代码,保存并点源代码(例如. c:pathtoGet-ProcessPlus.ps1或可能将其添加到您的配置文件中。

那就用Get-ProcessPlus来称呼它。使用参数名称是可选的,只需提供一个或多个进程ID或名称即可,例如Get-ProcessPlus chrome,firefoxGet-ProcessPlus 1044,894,432

最后,这里是代码:

function Get-ProcessPlus {
[CmdletBinding(DefaultParameterSetName = 'Default')]
param (
[Parameter(ParameterSetName='ProcessName',Position = 0)]
[string[]]
$Name,
[Parameter(ParameterSetName='PID',Position = 0)]
[int[]]
$Id
)
# Check which parameter set is in use and get our processes
switch ($PSCmdlet.ParameterSetName) {
'ProcessName' {
$AllProcesses = Get-Process -Name $Name
break
}
'PID' {
$AllProcesses = Get-Process -Id $Id
break
}
default { $AllProcesses = Get-Process }
}
foreach ($Process in $AllProcesses) {
# Retrieve TCP and UDP Connection information for the current process (if any)
$UDPConnections = Get-NetUDPEndpoint -OwningProcess $Process.Id -ErrorAction Ignore |
Select-Object LocalAddress,LocalPort
$TCPConnections = Get-NetTCPConnection -OwningProcess $Process.Id -State Listen -ErrorAction Ignore |
Select-Object LocalAddress,LocalPort
$TCPPorts = $TCPConnections.LocalPort | Where-Object { $null -ne $_} | Select-Object -Unique
$UDPPorts = $UDPConnections.LocalPort | Where-Object { $null -ne $_} | Select-Object -Unique
$TCPAddresses = $TCPConnections.LocalAddress | Select-Object -Unique
$UDPAddresses = $UDPConnections.LocalAddress | Select-Object -Unique
# Collect and output all information about the current process
[PSCustomObject] @{
'ProcessName'   = $Process.ProcessName
'Id'            = $Process.Id
'Description'   = $Process.Description
'Path'          = $Process.Path
'CPU usage (s)' = $Process.CPU
'TCP Addresses' = $TCPAddresses
'TCP Ports'     = $TCPPorts
'UDP Addresses' = $UDPAddresses
'UDP Ports'     = $UDPPorts
}
}
}

最新更新