locked
使用GPO讓Client在power user權限下,以工作排程方式進行電腦休眠 RRS feed

  • 問題

  • 環境:Win Server 2003, client 為 Win7企業版

    目的:希望在每天22:15時,未關機的電腦都能自動進入"休眠"

    發布方式:使用GPO統一套用

    我所下的指令為:

    SCHTASKS /Create /F /RU "builtin\administrators" /RP /RL Highest /IT /SC DAILY /TN schedule_test2 /TR "cmd /c c:\prompt.bat" /ST 22:15:00

    Client的權限設定如下:

    Users群組:Domain Users

    Power Users群組:Vinccent.wu

    Administrators群組:Domain Admins、Administrator

    使用user的帳號,登入本機測試,當Vincent.wu為power users時,會出現"錯誤:存取被拒"的訊息

    使用user的帳號,登入本機測試,當Vincent.wu為administrators時,便可正常執行。訊息→成功,排程工作"schedule_test2 "已成功建立

    請問我該如何修改我的指令,才能透過GPO的方式,讓User在權限為Power User狀況下,能順利讓電腦進入休眠?謝謝!

    • 已變更類型 George.Chang 2014年7月17日 上午 01:40 Customer Discontinued
    • 已變更類型 George.Chang 2014年7月28日 上午 08:01 問題排除
    2014年7月8日 上午 08:08

解答

  • Hi emandy

    如果您使用指令新增工作排程但不指定參數RU和RP,預設會使用目前的使用者去新增這個工作,

    再搭配"只有使用者登入時才執行"這個設定,應該可以達成您的需求

    • 已提議為解答 MiaoH 2014年8月1日 上午 01:38
    • 已標示為解答 George.Chang 2014年8月1日 上午 08:26
    2014年7月25日 上午 03:19
  • Hi emandy

    您可以嘗試在login script下執行此指令,會使用登入的使用者去執行該指令,作者就會是該使用者

    • 已標示為解答 emandy 2014年8月4日 上午 02:21
    2014年7月29日 上午 09:47
  • Hi emandy

    修改成以下格式,可以簡單的執行倒數且不必呼叫其他的VB程式

    @echo off
    for /l %%a in (60 -1 1) do (
        cls&echo 60秒鐘之後電腦將執行休眠,若欲中止休眠請將本視窗關閉。
        echo 倒數計時 %%a 秒
        ping -n 2 127.0.0.1>nul
    )
    shutdown.exe /h
    pause

    選擇"只有使用者登入時才執行",就可以達成您的需求
    • 已提議為解答 MiaoH 2014年8月1日 上午 01:38
    • 已標示為解答 George.Chang 2014年8月1日 上午 08:25
    2014年7月21日 上午 10:28

所有回覆

  • HI:
    確認一下以下路徑和檔案是否有足夠權限
    C:\Windows\Tasks
    C:\Windows\System32\Tasks
    C:\Windows\System32\cmd.exe

    謝謝
    2014年7月8日 下午 01:56
  • 謝謝你的回覆

    我做了下列修改,結果還是一樣:存取被拒

    C:\Windows\Tasks → 資料夾權限開放至完全控制
    C:\Windows\System32\Tasks → 資料夾權限開放至完全控制
    C:\Windows\System32\cmd.exe → 這個檔案我用本機admin也無法變更權限,顯示:無法將權限變更儲存到cmd。存取被拒。                 請問是否還有其他方法可行?謝謝!
    2014年7月9日 上午 05:15
  • HI:
    如果直接使用工作排程器建立排程,是否可以正常執行?

    謝謝
    2014年7月9日 下午 01:55
  • 可以的,如果是使用user的帳號,直接新增工作排程是可正常運作的。

    但是因為電腦數量眾多,且無user的帳、密,無法一一登入新增,所以才會想說使用GPO套用的方式進行。

    2014年7月10日 上午 12:03
  • Hi emandy

    會建議您的時間排程指令可以簡單一點

    SCHTASKS /Create /F /RU "builtin\administrators" /RP /RL Highest /IT /SC DAILY /TN schedule_test3 /TR "shutdown /h /f" /ST 22:15:00
    我修改使用shutdown /h /f,不需要再執行cmd,可能因為UAC阻擋造成執行失敗
    2014年7月10日 上午 02:23
  • 謝謝你的回覆。

    但是我剛剛試的結果,仍為:  錯誤。存取被拒。

    (我直接使用user的帳號登入本機,然後開cmd下你所建議的指令)

    2014年7月10日 上午 02:45
  • Hi emandy

    您的需求如果在Server 2008以上的網域,可以直接透過GPO的"排定的工作"來簡單達成。

    1.目前的問題在於SCHTASKS,並沒有開放給一般User建立的權限。

    2.所以不論您怎麼修改指令還是會卡在沒有執行SCHTASKS權限上

    3.您可以另外嘗試使用PSEXEC這個遠端工具

    http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

    2014年7月10日 上午 06:30
  • 您好,歡迎您將後續測試結果回報至論壇,或將對您有幫助的回覆標示為解答,以利討論的進行並幫助其他有類似問題的朋友。謝謝您!
    2014年7月15日 上午 06:08
  • hi 經過這幾天的測試,找到了解套的方法

    1.指令修改如下:

    SCHTASKS /Create /F /RU "aatest" /RP "3edc#EDC" /RL Highest /IT /SC DAILY /TN schedule_test4 /TR "cmd /c c:\prompt.bat" /ST 22:15:00

    2.C:\Windows\System32\Tasks 權限開放給PowerUsers完全控制(只需這個資料夾就可以了)

    3.GPO在每一台電腦新增一個本機admin帳號"aatest"、密碼"3#edc"

    做了上述的設定後,已經可以正常進行休眠了,謝謝大家的協助

    但是,發生了另一個奇怪的現象,就是被呼叫的prompt.bat無法顯示執行的視窗,都是在背景執行。

    prompt.bat內容如下:

    for /l %%A in (5,-1,1) do ( cls
    @echo 60秒鐘之後電腦將執行休眠,若欲中止休眠請將本視窗關閉。
    @echo 倒數計時 %%A 秒
    %SystemDrive%\wait.vbs )
    %SystemDrive%\shutdown.exe /h

    如果我單獨執行prompt.bat,是會自動帶出倒數計時的視窗的,如果未能在時間內關掉視窗,電腦就會自動進入休眠,但是透過工作排程呼叫的,就沒辦法跳出視窗,請問該如何讓prompt.bat能不要背景執行?

    2014年7月18日 上午 06:28
  • Hi emandy

    您可以參考這個討論

    2008R2工作排程執行winform時如何不要背景執行

    嘗試取消最高權限執行

    您也可以多個pause讓視窗暫停,確定是否有跳出來,還是因為執行時並沒有進入倒數而直接關機

    2014年7月18日 上午 09:34
  • hi George.Chang,

    1.我有參考"2008r2工作排程執行winform時如何不要背景執行"做過相關的設定修改了,但是當我設定成"只有使用者登入時才執行"、無論是否"取消最高權限執行" ,這個工作排程都無法運作。

    2.當設定成"不論使用者登入與否均執行"時,確定時間一到,排程就有正確執行,因為我在prompt.bat設定60秒倒數,雖然看不到跳出倒數的視窗,但是多次測試,確定排程啟動後60秒,電腦就會進入休眠了,所以可以確定有正常執行中,但是就是無法顯示視窗

    2014年7月21日 上午 03:44
  • Hi emandy

    修改成以下格式,可以簡單的執行倒數且不必呼叫其他的VB程式

    @echo off
    for /l %%a in (60 -1 1) do (
        cls&echo 60秒鐘之後電腦將執行休眠,若欲中止休眠請將本視窗關閉。
        echo 倒數計時 %%a 秒
        ping -n 2 127.0.0.1>nul
    )
    shutdown.exe /h
    pause

    選擇"只有使用者登入時才執行",就可以達成您的需求
    • 已提議為解答 MiaoH 2014年8月1日 上午 01:38
    • 已標示為解答 George.Chang 2014年8月1日 上午 08:25
    2014年7月21日 上午 10:28
  • Hi George.Chang

    已經修改成您建議的格式,真的是簡單多了,謝謝!

    但是執行上還是有問題!

    我新增2個排程,所有設定都一樣,其中一個為"只有使用者登入時才執行"、另一個為"不論使用者登入與否均執行"、時間相差2分鐘。

    能正常進入休眠者為:不論使用者登入與否均執行,但是仍未跳出倒數讀秒的視窗

    無法進入休眠:只有使用者登入時才執行,但是工作排程的狀態顯示為"執行中",等了很久,就是無法休眠,重新整理工作排程,狀態一直保持在"執行中"

    請問這個設定跟我登入的帳號有關嗎?

    目前登入的帳號為網域帳號vincent.wu,但是工作排程使用的帳號是 本機帳號aatest,這會造成問題嗎?

    2014年7月22日 上午 02:00
  • Hi emandy

    提供給您我的設定截圖,我的測試環境只有本機,使用本機帳號進行設定是沒有問題的

    您的vincent.wu帳號目前的權限是甚麼呢?

    2014年7月22日 上午 03:30
  • vincent.wu→網域帳號,權限為PowerUsers

    因為我無法貼圖,所以我用文字方式把我的設定列出來:

    • 一般

      名稱:schedule_test4

      位置:\

      作者:vincent.wu

      描述: (空的)

      安全性選項:

        當執行工作時,請使用下列使用者帳戶:aatest

        只有使用者登入時才執行 → 如果我選這個,就不會進入休眠

        不論使用者登入與否均執行 → 選這個的話,會進入休眠,但是不會跳出倒數視窗

        不要儲存密碼,工作將只有本機電腦資源的存取權 → 沒有打勾

        以最高權限執行 → 都沒有勾,但是試過如果打勾也能進入休眠,一樣不會有倒數視窗

        隱藏 → 沒有勾

    • 動作:啟動程式

    詳細資料: cmd /c c:\prompt.bat     也試過  c:\prompt.bat

    其他的設定應該都是預設值了。

    2014年7月22日 上午 03:56
  • Hi

    還是您要不要先找一台乾淨的PC,沒有加入網域,使用local admin先進行測試呢?

    另外您的Client是否有更新到SP1?

    我的測試結果和您的是相反的:

    不論使用者登入與否均執行

    無法進入休眠:只有使用者登入時才執行,但是工作排程的狀態顯示為"執行中",等了很久,就是無法休眠,重新整理工作排程,狀態一直保持在"執行中"

    只有使用者登入時才執行

    是正常的


    2014年7月22日 上午 04:52
  • Hi George,

    我使用原設備(有加入網域的NB)做測試,結果如下:

    1.使用本機aatest帳號(administrator)登入,且選擇"只有使用者登入時才執行"→會進入休眠,且"會"跳出倒數視窗

    若選擇"不論使用者登入與否均執行"→會進入休眠,但"沒有"跳出視窗

    2.使用本機BBBtest帳號(Power Users)登入,且選擇"不論使用者…"→會進入休眠,但不會跳出倒數視窗

    若選擇"只有使用者登入……"→不會進入休眠,沒有跳出視窗,工作排程狀態為"執行中"

    3.使用網域帳號登入(admin和power users),且選擇"不論使用者…"→皆會進入休眠,但不會跳出倒數視窗

    若選擇"只有使用者登入……"→不會進入休眠,沒有跳出視窗,工作排程狀態為"執行中"

    看來好像只有使用具admin權限的本機使用者帳號才會跳出視窗,但是我們所有user的權限都是PowerUsers,這個權限的政策又不能修改,該如何解套呢?

    2014年7月22日 上午 06:30
  • Hi emandy

    目前模擬您的環境

    只有使用者登入時才執行

    使用者選擇Domain Users並加入Local Power Users

    這樣的設定才可以正常執行

    目前來說問題是執行這個排程工作的使用者,必須是目前登入這部PC的使用者

    2014年7月22日 上午 10:53
  • Hi emandy

    如果您使用指令新增工作排程但不指定參數RU和RP,預設會使用目前的使用者去新增這個工作,

    再搭配"只有使用者登入時才執行"這個設定,應該可以達成您的需求

    • 已提議為解答 MiaoH 2014年8月1日 上午 01:38
    • 已標示為解答 George.Chang 2014年8月1日 上午 08:26
    2014年7月25日 上午 03:19
  • Hi George,

    謝謝,終於全部能正常作業了(不指定ru rp參數→休眠正常運作、倒數視窗正常跳出)

    太謝謝您的幫忙了,感謝所有人的大力協助,謝謝!

    Mandy

    2014年7月28日 上午 06:04
  • Hi emandy

    麻煩將對您有幫助的回覆標示為解答,以利討論的進行並幫助其他有類似問題的朋友。謝謝您!

    2014年7月28日 上午 08:03
  • hi George,

    我測試的太不嚴謹了。這兩天確認GPO套用結果時發現,休眠排程還是無法正常執行。

    當我以user的帳號登入user的電腦,打開cmd,輸入SCHTASKS /Create /F /RL Limited /IT /SC DAILY /TN schedule11 /TR "cmd /c c:\prompt.bat" /ST 22:00:00

    此時會以user的帳號新建一個工作排程,作者就是user的帳號,按右鍵執行,能順利跳出倒數視窗,時間到,會自動進入休眠,完全正常。

    但是當以以GPO方式派送,使用USER帳號登入,工作排程一樣有順利建立,但是作者是SYSTEM,按右鍵無法執行。

    感覺又繞回原點了,請問這個該如何解呢?謝謝!

    2014年7月29日 上午 08:49
  • Hi emandy

    您可以嘗試在login script下執行此指令,會使用登入的使用者去執行該指令,作者就會是該使用者

    • 已標示為解答 emandy 2014年8月4日 上午 02:21
    2014年7月29日 上午 09:47