Csv 如何在多个文本文件中搜索IP地址,并使用powershell将找到的IP地址输出到文本文件中?
我用这个撞到了砖墙。我的任务是搜索Windows服务器列表上的IIS日志,并在日志文件中创建连接到服务器的所有IP地址的报告。如果我使用Linux,那就很容易了。我可以用grep和cut在几分钟内完成。但是,这些是内部服务器,我无法从bashshell访问它们。我需要创建一个脚本,并使用powershell在每个本地服务器上运行它 我所能做的最接近的事情是首先运行一个脚本,搜索C:\inetpub\logs\LogFiles\中的所有.log文件,查找任何看起来像IPV4地址的内容,并将其转储到CSV文件中Csv 如何在多个文本文件中搜索IP地址,并使用powershell将找到的IP地址输出到文本文件中?,csv,powershell,ipv4,Csv,Powershell,Ipv4,我用这个撞到了砖墙。我的任务是搜索Windows服务器列表上的IIS日志,并在日志文件中创建连接到服务器的所有IP地址的报告。如果我使用Linux,那就很容易了。我可以用grep和cut在几分钟内完成。但是,这些是内部服务器,我无法从bashshell访问它们。我需要创建一个脚本,并使用powershell在每个本地服务器上运行它 我所能做的最接近的事情是首先运行一个脚本,搜索C:\inetpub\logs\LogFiles\中的所有.log文件,查找任何看起来像IPV4地址的内容,并将其转储到
get-childItem C:\inetpub\logs\logfiles\ -include *.log -rec | select-String -pattern ‘\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b’ | select-Object -Propery 'Line' | export-CSV C:\temp\output.txt -notypeinformation
这将创建一个csv文件,其中包含每个日志行,其中包含一个IP地址。然后,我对该文件运行第二个脚本,查找IP地址并将其输出到另一个文件(诚然是从在线某处“借用”的)
我遇到的问题是,一旦找到IP地址,它就会跳到下一行。日志文件的每一行都以一个时间戳和服务器本身的IP地址开始,因此我最终得到的是大约130000行192.168.1.X,这对我来说完全没有用
如果我使用Linux,那就很容易了。我可以用grep和cut在几分钟内完成。但是,这些是内部服务器,我无法从bashshell访问它们
在Windows上,有效查询IIS日志文件的最可行方法是使用
LogParser支持类似SQL的查询,以获取日志中所有客户端IP地址的列表:
logparser "SELECT DISTINCT c-ip INTO C:\clientips.txt FROM C:\inetpub\logs\logfiles\*.log"
如果我使用Linux,那就很容易了。我可以用grep和cut在几分钟内完成。但是,这些是内部服务器,我无法从bashshell访问它们
在Windows上,有效查询IIS日志文件的最可行方法是使用
LogParser支持类似SQL的查询,以获取日志中所有客户端IP地址的列表:
logparser "SELECT DISTINCT c-ip INTO C:\clientips.txt FROM C:\inetpub\logs\logfiles\*.log"
对于分析IIS日志,我强烈建议使用。 一个易于使用的命令行工具,使用SQL方言从数据源提取信息 您可以使用下面的代码使IP到达您的站点。只需选择日志文件名,或者如果要分析多个日志文件,只需使用通配符,如“c:/logs/ex*”
如果你不是SQL的超级粉丝,有人写了50多个有用的例子 对于分析IIS日志,我强烈建议使用。 一个易于使用的命令行工具,使用SQL方言从数据源提取信息 您可以使用下面的代码使IP到达您的站点。只需选择日志文件名,或者如果要分析多个日志文件,只需使用通配符,如“c:/logs/ex*” 如果你不是SQL的超级粉丝,有人写了50多个有用的例子
logparser "select c-ip, count(c-ip) as requestcount from [LogFileName] group by c-ip order by count(c-ip) desc"