我的客户使用第三方软件存储机密医疗信息。我们现在需要找出哪些用户在数据库中打开了特定记录。我与供应商保持联系,他们记录的唯一方法是在每台计算机上的文本文件中(显然)。我需要从每台计算机解析这个文本文件,以提取我需要的信息。以下是文本文件中信息的匿名示例 - 为了便于阅读,我在每一行之间添加了空格。
登录。| 10/03/2012 | 01:12:45 | John Smith博士| 3 | FS01 |带终端服务Service Pack 1的Windows 7域控制器(6.1 Build 7601)| 3.12.1 < /强>
进度记录 - 新记录开启| 10/03/2012 | 01:13:33 | John Smith博士| 666241 | 8463 | Richard Test ^ 05/09 / 1956 | .F。| .T。| 1 | FS01
进度记录 - 由用户放弃| 10/03/2012 | 01:14:29 | John Smith博士| 666241 | 8463 | Richard Test | .F。| .T。| FS01 < / p>
我可以轻松地删除任何有关记录名称的行,即“理查德测试”,但这些日志一直追溯到2012年。有没有人知道如何解析每行的日期以便我例如,在2016年1月1日之后可以拉什么东西吗?
import-module activedirectory
$computers = "FS01"#get-adcomputer -filter * | Select-object -ExpandProperty Name
foreach($computer in $computers){
$path = "\\$computer\C$\Users\Public\Documents\HCN\MD\MDTrace.LOG"
If(Test-Connection -ComputerName $computer -Count 1 -ErrorAction SilentlyContinue){
If(Test-Path $Path){
Get-Content -Path $path | foreach { if($_ -match "Thomas Hogan"){Write-Output "$computer -- $_"} }
}
}
}
答案 0 :(得分:1)
使用正则表达式提取日期,例如:
$cutoff = Get-Date -Year 2013 -Month 1 -Day 1
Get-Content .\log.txt | ? {
$g = [regex]::Match($_, '(\d\d)/(\d\d)/(\d\d\d\d)').Groups
(Get-Date -Year $g[3].Value -Month $g[2].Value -Day $g[1].Value) -gt $cutoff
} | Out-File filtered_log.txt
如果文件很大,那么这种方法可能会更快:
$cutoff = Get-Date -Year 2013 -Month 1 -Day 1
Get-Content .\log.txt -ReadCount 1 | % {
$_ | ? {
$g = [regex]::Match($_, '(\d\d)/(\d\d)/(\d\d\d\d)').Groups
(Get-Date -Year $g[3].Value -Month $g[2].Value -Day $g[1].Value) -gt $cutoff
} | Out-File filtered_log.txt -Append
}
答案 1 :(得分:0)
我在试验和错误后发现我可以在这种情况下拆分,因为它们总是被|
分开$computers = "NB04TMPL" #Get-Content D:\computers.txt | Sort-Object
$date = "21/01/2013"
$name = "Richard Test"
foreach ($computer in $computers)
{
$path = "C:\temp\MDTrace.LOG"
If (Test-Connection -ComputerName $computer -Count 1 -ErrorAction SilentlyContinue)
{
If (Test-Path $Path)
{
Get-Content -Path $path | foreach {
$str = ($_ -split '\|')
if ($str[1] -gt $date)
{
if ($str[6] -match $name)
{
Write-Output $_
}
}
}
}
}
}
热衷于听到任何想法。我不确定这是如何与RegEx叠加的。我想RegEx会让我获得更多的灵活性和更少的If