Powershell根据间隔提取日志?

时间:2014-04-24 03:18:51

标签: powershell csv scripting

我的脚本逻辑如下: -

  • 检查文件夹是否为空
  • 如果使用相同的命令,过去30天的异常时间段。即StartDate等
  • 如果文件夹不为空,则使用相同的命令获取/提取日志1天 只是调整时间安排。
  • 脚本将安排每5分钟运行一次。对于使用相同命令1天的每次运行提取,将结果保存在temp.csv中并比较final-admin.csv的最新更新副本。
  • 如果发现变化;写差异/重写 最终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写的区别;上面的命令会覆盖/或只是追加?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用 -Uformat 开关

更改日期
$enddate= Get-Date ([datetime]::Today) -UFormat "%m%d%Y"
$Startdate= Get-Date ($enddate.AddDays(-1))  -UFormat "%m%d%Y"

该行

$New | ?{$Old -notmatch $_} | Export-CSV $outcsv -notype

将覆盖数据, Export-CSV -Append 将被追加。