請教各位前輩,小弟想用工作排程進及PowerShell每小時備份Log,右鍵直接執行或用PowerShell ISE執行ps1檔都沒問題,但一放到工作排程器裡面,手動執行及排程就會沒作用,想請問小弟該怎麼排除…?
Script內容:
C:\Backup\FastCopy\FastCopy.exe /Cmd=sync /Auto_Close /Logfile="C:\Backup\Log_Backup.txt" "C:\Windows\System32\winevt\Logs\Security.evtx" /To="v:\"
PowerShell -Command Rename-Item v:\Security.evtx -NewName "$((Get-Date).tostring("yyyyMMdd-HHmmss")).evtx"
PowerShell -Command "& {Clear-Eventlog -Log Security}"
工作排程器內容:
11/30 更新
小弟改用以下Script執行排程,每小時自動建立一個資料夾,並把Sceurity.evtx放進去,排程都正常執行,奇怪的事情又發生了…。
每個小時的資料夾都會正常被建立,但不是每次都有Security.evtx被複製進去…
D:\FastCopy\FastCopy.exe /Cmd=sync /ACL /Force_Close /Logfile="D:\Log\Log_Backup.txt" "%SystemRoot%\System32\Winevt\Logs\Security.evtx" /To="D:%date:~0,4%%date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%%time:~6,2%"
forfiles /p d:\ /D -7 /C "cmd /c IF @isdir == TRUE rd /S /Q @path"
PowerShell -Command "& {Clear-Eventlog -Log Security}"
請用 system 帳戶
如果PS1的路徑沒有空白之類的什麼都不用加放心直接貼路徑,test.ps1直接放D根目錄
在test.ps1裡面放入這兩行指令
Start-Transcript D:\testlog.txt
write "Hello World"
執行排程後到D磁碟去開LOG看狀況,沒問題再把你自己的程式碼貼進去改掉
小弟用本機管理員、網域管理員、系統帳戶,結果都一樣…,手動執行ps1或右鍵執行排程都正常,但一進入自動排程,雖然看起來有執行,卻不會產生我要的Event Log檔…。
你的程式是你自己寫的嗎?
工作排程執行的帳戶會導致起始路徑變動
我給的Start-Transcript D:\testlog.txt指令
請把它放到第一行執行,每次執行完後請看LOG
請看LOG顯示執行結果來排除問題,
沒有LOG沒人有辦法解決你的問題,因為根本不知道問題點
或者你換其他指令來運作你的備份
後來我就改用其它方法備份了…很感謝大大的幫忙~
回覆一下上次大大的建議,輸出的Log如下:
Windows PowerShell 轉譯開始
開始時間: 20211201093002
使用者名稱: ETI\SYSTEM
RunAs 使用者: ETI\SYSTEM
設定名稱:
電腦: TEST-SERVER2019 (Microsoft Windows NT 10.0.17763.0)
主應用程式: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.EXE D:\log.ps1
處理序識別碼: 4560
PSVersion: 5.1.17763.1007
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.17763.1007
BuildVersion: 10.0.17763.1007
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
已啟動轉譯,輸出檔為 D:\testlog.txt
Hello World
PS>$global:?
True
Windows PowerShell 轉譯結束
結束時間: 20211201093002