PowerShell如何解析nmap输出提取存活主机IP并逐行写入文件
PowerShell解析nmap存活主机IP解决方案
核心等效命令
对应你原有awk命令的PowerShell版本完整写法如下,可实现完全相同的输出效果:
nmap -n -sn $targets -oG - | Select-String '^Host:\s+(\S+).*Up$' | ForEach-Object { $_.Matches.Groups[1].Value } | Out-File "$targetdir/targets.txt" -Encoding UTF8
逻辑说明
- 前半段nmap参数和你原有逻辑完全一致,保留
-oG -输出grepable格式到标准输出 Select-String用正则匹配所有状态为Up的主机行,同时通过捕获组提取IP地址字段ForEach-Object遍历所有匹配结果,取出捕获到的IP值Out-File将结果逐行写入目标txt文件,指定UTF8编码避免乱码,你也可以根据需求调整编码参数
小提示:如果不需要强制UTF8编码,也可以简化为用重定向符
>替代Out-File部分,注意PowerShell默认重定向输出编码为UTF-16LE,可能会被部分文本工具识别为乱码,推荐优先用指定编码的写法。
Python拼接调用参考
如果你是在Python代码中拼接调用该PowerShell命令,可参考如下写法:
ps_cmd = f"nmap -n -sn {targets} -oG - | Select-String '^Host:\\s+(\\S+).*Up$' | ForEach-Object {{ $_.Matches.Groups[1].Value }} | Out-File '{targetdir}/targets.txt' -Encoding UTF8" # 后续可通过subprocess模块调用powershell执行该命令
内容的提问来源于stack exchange,提问作者eightbitjonah
相关产品推荐
相关产品推荐

