所以我想寫一個powershell腳本,將通過一個文件夾完整的.evtx文件,通過系統日誌發送出每一個,然後追加「.done」在這樣做之後將其添加到.evtx文件的文件名中。在一個foreach對象循環中Logparser和powershell與多個日誌文件
事情是,我不太清楚如何引用我在Foreach-Object循環內的當前日誌文件。
希望下面的代碼能解釋我的dillema。
# begin foreach loop
Get-ChildItem $evtxfolder -Filter *.evtx | `
Foreach-Object {
$LPARGS = ("-i:evt", "-o:syslog", "SELECT STRCAT(`' evt-Time: `', TO_STRING(TimeGenerated, `'dd/MM/yyyy, hh:mm:ss`')),EventID,SourceName,ComputerName,Message INTO $SERVER FROM $CURRENTOBJECT") #obviously, this won't work.
$LOGPARSER = "C:\Program Files (x86)\Logparser 2.2\logparser.exe"
$LP = Start-Process -FilePath $LOGPARSER -ArgumentList $LPARGS -Wait -Passthru -NoNewWindow
$LP.WaitForExit() # wait for logs to finish
如果你看$ LPARGS,你會看到我把$ SERVER和$ CURRENTOBJECT。顯然,我現在擁有它的方式不會奏效,但很明顯,這是行不通的。所以基本上,我試圖將變量$ SERVER(作爲參數傳入)放入logparser的參數中,並引用它正在處理的所有當前事件日誌以放入「FROM」語句中,以便它知道工作在一個.evtx文件上。什麼是正確的方法來做到這一點?
FROM語句的INTO的例子:
..snippet..
SourceName,ComputerName,Message INTO @192.168.56.30 FROM 'C:\Eventlogs\20131125.evtx'"
當然, 'C:\事件日誌時\ 20131125.evtx',因爲它經過了目錄的內容會發生變化。
我們的powershell版本是2. – Ondaje
哪個是最後的ps1? – Kiquenet