Client環境:
利用GPO發布工作排程給「已加入網域,但是使用的是本機帳號而不登入網域帳號」的Client電腦(Win 10 Pro)
欲排定的工作為:
每天固定時間執行vbs,透過vbs去呼叫bat執行背景備分作業
因部分Client是24小時運作的,故而透過工作排程指定固定時間運作
設定說明:
1)已利用GPO中的電腦設定新增排定的工作內容如下圖
其中(當執行工作時,請使用下列使用者帳戶使用此帳號「NT AUTHORITY\SYSTEM」),經測試後,測試的Client端電腦可成功在重開機登入時獲取GPO的工作排程如下圖
但是卻無法順利執行排定的作業(顯示0X1)
有發現在GPO中是設定「只有使用者登入時才執行」,可是測試的Client端電腦獲取的設定卻是「不論使用者登入與否均執行」
2)vbs內容如下(用意為背景執行欲呼叫的bat)
Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "\\網路硬碟的IP Address\Share\Software\backupforPOS\Backup_Client_for_DomainComputers.bat" & Chr(34), 0
Set WinScriptHost = Nothing
3)bat內容如下
robocopy C:\Users\%username%\Desktop \\網路硬碟的IP Address \clientbackup\%COMPUTERNAME%\%username%\Desktop\ /S /xo /purge /max:104857600
robocopy C:\Users\%username%\Documents \\網路硬碟的IP Address \clientbackup\%COMPUTERNAME%\%username%\Documents\ /S /xo /purge /max:104857600
*直接在測試的Client端電腦去點選vbs可正常運作,vbs及bat存放於網路硬碟內,測試的Client端電腦是有存取權限
**問題:**該如何才能讓GPO發布的工作排程在,已加入網域,但是使用的是本機帳號而不登入網域帳號的Client電腦,成功收到排程及運作?
原因出在你vbs跟bat的內容,你用robocopy備份到的路徑是SMB的位置,
SYSTEM帳戶是本地帳戶,是無法存取網路資源,所以你備份到網路硬碟會失敗,
%username%這個變數,他在工作排程運作的時候也變成SYSTEM,
由於你的電腦是有網域狀態的,所以連線的身份會變成%COMPUTERNAME%
與你電腦登入的使用者無關,所以你有幾種簡單的解法,
1.改用使用者登入後執行,讓工作排程自動帶入使用者資訊,這樣程式碼可以不用改
2.將網路硬碟分享的權限,修改成Domain COMPUTER有權讀寫,
前提是你的SMB服務有加網域。
最不好的解法,用Net use去指定SMB路徑,會在你的Script內留下帳戶跟密碼
感謝您的說明!
但實際上這台Client本機帳號,是有權限存取NAS的SMB資料夾
且在Client直接點選vbs或是bat,都能成功在bat指定的NAS路徑建立資料夾備份檔
而改選擇「只有使用者登入時才執行」這個設定,在GPO端就是設定這個選項,但是Client所獲取的設定變成「不論使用者登入與否均執行」,且選項是反灰無法變更
因此困惑的是,是否有除了「NT AUTHORITY\SYSTEM」其他的使用者可填寫,讓Client能成功獲取工作排程並順利執行?
為何這台電腦會用本機帳戶去存取NAS的SMB資料夾?
已經加入網域的電腦,就該使用網域帳戶存取才對。
是否有除了「NT AUTHORITY\SYSTEM」??,當然有
"Domain users" 基本上就代表著該網域的使用者帳戶