iT邦幫忙

0

使用工作排程器及PowerShell備份問題

請教各位前輩,小弟想用工作排程進及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}"

工作排程器內容:
https://ithelp.ithome.com.tw/upload/images/20211127/20106763soo0FT1Nim.pnghttps://ithelp.ithome.com.tw/upload/images/20211127/201067635XMde0NXoZ.pnghttps://ithelp.ithome.com.tw/upload/images/20211127/20106763xVF4hKiTcX.png

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}"

https://ithelp.ithome.com.tw/upload/images/20211130/201067634jSUqWmSzE.jpg

https://ithelp.ithome.com.tw/upload/images/20211130/20106763uIUJdhRDB0.jpg

看更多先前的討論...收起先前的討論...
nwm310 iT邦新手 4 級 ‧ 2021-11-27 19:06:21 檢舉
新增引數 -exec bypass -File "C:\Backup\Log.ps1"
snackshih iT邦新手 4 級 ‧ 2021-11-28 10:16:20 檢舉
其實我之前也有試過前面加ExecutionPolicy Bypass -File但結果還是一樣…
好奇工作排程執行時沒有顯示錯誤訊息嗎?
要試著用D槽嗎? (閃C槽權限問題)
snackshih iT邦新手 4 級 ‧ 2021-11-28 18:03:05 檢舉
他顯示0x0順利執行之類的…,我也有想過是權限問題,所以改存在d,結果還是一樣…。後來我放棄了,改用另一種方式備份…

2 個回答

1
qpowjohn
iT邦新手 4 級 ‧ 2021-11-28 12:36:54

要不要嘗試用system權限執行

snackshih iT邦新手 4 級 ‧ 2021-11-28 18:04:16 檢舉

請問,這個具體方式該怎麼試?

0
zero
iT邦研究生 5 級 ‧ 2021-11-29 17:42:52

請用 system 帳戶

https://ithelp.ithome.com.tw/upload/images/20211129/20022284JtWcBOci2c.jpg

如果PS1的路徑沒有空白之類的什麼都不用加放心直接貼路徑,test.ps1直接放D根目錄

https://ithelp.ithome.com.tw/upload/images/20211129/20022284xHeKo26Bvy.jpg

在test.ps1裡面放入這兩行指令

https://ithelp.ithome.com.tw/upload/images/20211129/20022284nCB678MNEk.jpg

Start-Transcript D:\testlog.txt

write "Hello World"

執行排程後到D磁碟去開LOG看狀況,沒問題再把你自己的程式碼貼進去改掉

看更多先前的回應...收起先前的回應...
snackshih iT邦新手 4 級 ‧ 2021-11-30 09:03:51 檢舉

小弟用本機管理員、網域管理員、系統帳戶,結果都一樣…,手動執行ps1或右鍵執行排程都正常,但一進入自動排程,雖然看起來有執行,卻不會產生我要的Event Log檔…。

zero iT邦研究生 5 級 ‧ 2021-11-30 12:30:11 檢舉

你的程式是你自己寫的嗎?

工作排程執行的帳戶會導致起始路徑變動

我給的Start-Transcript D:\testlog.txt指令

請把它放到第一行執行,每次執行完後請看LOG

請看LOG顯示執行結果來排除問題,

沒有LOG沒人有辦法解決你的問題,因為根本不知道問題點

或者你換其他指令來運作你的備份

snackshih iT邦新手 4 級 ‧ 2021-11-30 13:38:14 檢舉

後來我就改用其它方法備份了…很感謝大大的幫忙~

snackshih iT邦新手 4 級 ‧ 2021-12-01 09:35:56 檢舉

回覆一下上次大大的建議,輸出的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

snackshih iT邦新手 4 級 ‧ 2021-12-06 09:01:06 檢舉

zero大,我用網域或本機的system帳戶,手動執行沒有反應~

zero iT邦研究生 5 級 ‧ 2021-12-06 12:31:46 檢舉

如果你是指程式運作的時候會有執行畫面出現之類的

只有使用登入的帳戶才會出現

用SYSTEM帳戶執行工作排程

任何呼叫前端的視窗都不會出現

CMD的黑視窗Powershell的藍視窗

對微軟來說就是顯示給用戶的前端

snackshih iT邦新手 4 級 ‧ 2021-12-06 17:13:09 檢舉

抱歉沒說清楚~沒反應是指在工作排程器上面右鍵執行,雖然顯示執行成功,但卻沒有執行Script的內容…。他沒執行Script裡面的複製Security.evtx檔案…。
後來我把身份改成Administators,現在正常運作了…。

我要發表回答

立即登入回答