parsing - 仅捕获 `PID` 中的 `netstat` 字段

标签 parsing powershell-2.0

在进行 Web 开发时,我有一个进程会定期挂起。

我想用 PowerShell 脚本杀死它。

据我所知,netstat 命令似乎返回一个字符串,而不是具有易于访问属性的友好对象。在我的阅读中,我还没有找到一个电源外壳友好的替代品,尽管我对一个持开放态度。

function killport($port) {
    // How do I capture the $PID from here?
    netstat -ao | findstr $port
    write-host Taskkill /PID $pid 
    sleep 5
    write-host Taskkill /PID $pid /f
}

示例运行:

netstat -ao | findstr 51135
  TCP    127.0.0.1:51135        r151:51135             ESTABLISHED     7968

最佳答案

假设您只会得到一个结果(这似乎是可能的),您可以使用一个简单的正则表达式来捕获该行的最后一组数字。

$netstat = "TCP    127.0.0.1:51135        r151:51135             ESTABLISHED     7968";
$PortNumRegex = [regex]"(\d+)$";
$portnum = $PortNumRegex.Match($netstat);
$portnum.captures[0].Value;

在您的情况下,将 $netstat 行替换为 netstat -ao | findstr 51135 ;您还可以通过 select-string 或其他正则表达式匹配运行 netstat -ao 的输出来消除 findstr 51135,但对于像这样的简单情况这个,上面的应该可以正常工作。

关于parsing - 仅捕获 `PID` 中的 `netstat` 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25342782/

相关文章:

javascript - 从 JavaScript 中的自定义语法创建 AST

python - 我可以绕过 python 中的 UnicodeDecodeError 吗?

powershell - 重命名匹配模式的文件名部分

python - 构建Python列表比较逻辑解析器

javascript - 使用 java 和 javascript 将数据从 Excel 导入数据库。更快的方法是什么?

c# - 如何合并日期时间类型字段和浮点类型字段。之后解析为日期时间数据类型字段(daypilot 日历)

powershell - 如何在Powershell脚本中一个接一个地运行多个脚本

powershell - 如何从命令行启动 PowerShell(不是脚本)

powershell - 合并多个文件中的所有内容,找到匹配的字符串并获取每行的计数

powershell - 使用 WMI 的 PowerShell 中的简单逻辑语句