使用端口80查找进程

时间:2015-11-11 16:38:06

标签: iis owin netstat httplistener

我有一个使用OWIN自托管(WebApp.Start)侦听端口80的Windows服务。我想使用PowerShell脚本以编程方式找到该服务。我有以下PowerShell脚本:

netstat -noab | Select-String ":80 " -Context(1,0) `
 | Where { $_.Context.PreContext[0].Trim().StartsWith("[") } `
 | ForEach { ($_.Context.PreContext[0].Substring(2) -split ']')[0] }

但是这只会产生lsass.exe。

如果我运行netstat -noa,我会得到更多结果,但是当我包含"Can not obtain ownership information"选项

时,列出的所有进程都是系统进程(不是我的)或-b
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4
  TCP    10.100.18.158:80       10.100.25.102:42967    ESTABLISHED     4
  TCP    10.100.18.158:80       10.100.25.102:42968    ESTABLISHED     4
  TCP    10.100.18.158:80       10.100.25.102:42974    ESTABLISHED     4
  TCP    10.100.18.158:80       10.100.28.8:44763      ESTABLISHED     4
  TCP    10.100.18.158:80       10.100.28.8:44764      ESTABLISHED     4
  TCP    10.100.18.158:80       10.100.28.8:44765      ESTABLISHED     4
  TCP    10.100.18.158:80       10.100.28.8:47400      ESTABLISHED     4
  TCP    [::]:80                [::]:0                 LISTENING       4

我认识到这可能是因为OWIN在内部使用HTTP侦听器的方式。

使用端口可靠地确定流程/服务的任何方法?

1 个答案:

答案 0 :(得分:2)

通常这表示它是HTTP.sys,

我在这里回答了类似的问题: Cannot bind to port 80, Microsoft-HTTPAPI/2.0 Lock

但总结是你可以使用 找出原因的最佳方法是从提升的命令提示符运行以下命令,它将列出所有注册,包括使用它们的进程ID:

    netsh http show servicestate view=requestq verbose=yes

Request queue name: Request queue is unnamed.
    Version: 2.0
    State: Active
    Request queue 503 verbosity level: Basic
    Max requests: 1000
    Number of active processes attached: 1
    **Process IDs**:
        1120
    URL groups:...

并在那里找到正确的预订,有点像:HTTP:// LOCALHOST:80 /或LOCALHOST:80,或*:80

IIS将使用应用程序池名称向请求队列名称注册预留,以便您轻松找出使用它的人。