【发布时间】:2014-04-24 03:18:51
【问题描述】:
我的脚本逻辑如下:-
- 检查文件夹是否为空
- 如果是使用相同的命令,例外时间段为过去 30 天。即 StartDate 等
- 如果文件夹不为空,则使用相同的命令获取/提取 1 天的日志 只是调整时间设置。
- 脚本将安排为每 5 分钟运行一次。对于使用相同命令的每次运行提取 1 天,将结果保存在 temp.csv 中,并比较它的 final-admin.csv 的最新副本。
- 如果发现更改;写入差异/覆盖 final-admin.csv
代码
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
$outcsv='c:\Mail-audit-results\Final-mail-admin.csv'
if(Get-ChildItem C:\Mail-audit-results){
$enddate=[datetime]::Today
$Startdate=$enddate.AddDays(-1)
$splat=@{
Identity='mail.test-nw.com'
LogonTypes=@('Admin','Delegate')
ShowDetails=$true
StartDate=$Startdate
EndDate=$enddate
}
Search-MailboxAuditLog @splat | Export-Csv c:\Mail-audit-results\temp_results.csv -NoTypeInformation -Append
$Old = Import-CSV $outcsv
$New = Import-CSV c:\Mail-audit-results\temp_results.csv
$New | ?{$Old -notmatch $_} | Export-CSV $outcsv -notype
}
#process items when files found
}else{
# process when no files found.
$enddate=[datetime]::Today
$Startdate=$enddate.AddDays(-30)
$splat=@{
Identity='mail.test-nw.com'
LogonTypes=@('Admin','Delegate')
ShowDetails=$true
StartDate=$Startdate
EndDate=$enddate
}
Search-MailboxAuditLog @splat | Export-Csv $outcsv -NoTypeInformation -Append
}
Get-ChildItem 'c:\Mail-audit-results\Final-mail-admin.csv' | ForEach {
Else
{
return 0;
}
}
问题点
如何更改节中 mm/dd/yyy 格式的日期格式
$enddate=[datetime]::Today
$Startdate=$enddate.AddDays(-1)
如何用差异数据覆盖?
$New | ?{$Old -notmatch $_} | Export-CSV $outcsv -notype
我不想将差异写入第三个文件,我希望将原始文件$outcsv 写入;上面的命令会覆盖/还是只是追加?
谢谢。
【问题讨论】:
标签: powershell csv scripting