作者:Evi1oX
特别注意: (暂只支持 log 或者 txt 文件)
本来想研究清除 evtx 的事件 id 对应的 ip..暂时没有发现适合编辑 evtx 的脚本代码. 所以文中结尾的 powershell 脚本就出来了
那么思路和上次 linux 一样..清除 ip 或者替换 ip 记录
编写一个函数getip, 用于获取随机 ip 地址.那么每次使用,只需要调用这个函数即可 .在 powershell 直接输出好像有点问题..所以我们暂时找到一个备用方案.用单引号引起来即可
编写另一个替换内容的函数ip, param($path,$oldip)
,是用于直接 ip 方法时捕获-path 和-oldip 内容, 使用 count获取文件行数.
因为 powershell 没有每次替换一行的命令. 非常难受.所以我查询了下.网上没有相关的方法.
那么我们想一下.for 循环赋值$x
递增.如果$_.ReadCount
等于$x
, 每次只替换当前行不就行了么.当然也可以这么写if ($_.ReadCount -ge 2 -and $_.ReadCount -le 13)
判断行数在第二行到13行.那么就执行后面的语句.
最终使用$_ -replace $oldip,$nip
-replace 替换旧的 ip 即可..执行效果如下
初始文件内容
使用ip 方法进行替换
最终效果, 不多说了.大家都懂
完整代码如下
代码语言:javascript复制Function getip(){$num1 = Get-Random -Minimum 11 -Maximum 253$num2 = Get-Random -Minimum 11 -Maximum 253$num3 = Get-Random -Minimum 11 -Maximum 253$num4 = Get-Random -Minimum 11 -Maximum 253$newip = Write-Output $num1'.'$num2'.'$num3'.'$num4$newip}Function ip(){param($path,$oldip)$filecode = Get-Content $path$lines = ($filecode).Count$fornum = [regex]::Matches([IO.File]::ReadAllText($path, [Text.Encoding]::Default),$oldip).CountFor ( $x=1; $x -le $lines;$x ){$filecode | ForEach-Object {if ($_.ReadCount -ne $x) {$nip = getip$_ -replace $oldip,$nip} else {$_}} |Set-Content $path}}#ip -path C:WWWPHPTutorialApachelogserror.log -oldid 200.999.999.99;
作者历史文章赏析:
解决SqlServer 脱裤的一个小问题
解决 HTTPS 证书失效菜刀连不上 日志安全之linux清除日志