进行网络开发时,我有一个定期挂起的过程。
我想用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
答案 0 :(得分:2)
假设您只获得一个结果(看起来很可能),您可以使用一个简单的正则表达式来捕获该行的最后一组数字。
$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
;您也可以通过运行findstr 51135
到netstat -ao
或其他正则表达式匹配的输出来消除select-string
,但对于这样的简单情况,上述情况应该可以正常工作。