我正试图找到一种方法来列出进程;
- 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,firefox
或Get-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
}
}
}