ฉันจะกำหนดเวลาให้รีสตาร์ทเซิร์ฟเวอร์จากบรรทัดคำสั่งใน Windows 2012 ได้อย่างไร


15

ฉันต้องการกำหนดการรีสตาร์ทเซิร์ฟเวอร์ครั้งเดียวเช่นเพื่อให้การติดตั้งอัปเดตเสร็จสิ้นในตอนเช้า ฉันจะทำสิ่งนี้จากบรรทัดคำสั่งใน Windows 2012 ได้อย่างไร

ใน Windows 2008 ฉันจะใช้atคำสั่งนั้น

at 2am shutdown -r -f -c "restart"

และหยุดช่วงบ่ายที่เหลือ

แต่ใน Windows 2012 การรันคำสั่งนี้จะบอกฉันว่า

The AT command has been deprecated. Please use schtasks.exe instead.

ดังนั้นคำสั่งเทียบเท่ากับ schtasks.exe อาจเป็น

schtasks /create /sc once /tn restart /tr "shutdown - r -f ""restart""" /st 02:00

นอกเหนือจากการจดจำได้อย่างดีแล้วคำสั่งนี้ยังมีข้อเสียที่สำคัญอีกอย่างหนึ่งนั่นคือกำหนดเวลาสำหรับการทำงาน 2AM วันนี้ - ไม่ได้ใช้งานมากนักยกเว้นว่าฉันจะตื่นตอนตี 1 เพื่อเรียกใช้งาน

ตามความช่วยเหลือสำหรับ schtasks.exe /sdสวิตช์สำหรับการตั้งค่าวันที่เริ่มต้นจะไม่สามารถใช้ได้กับ/sc onceสวิทช์สำหรับการตั้งค่าวันที่เริ่มต้นไม่สามารถใช้ได้กับดังนั้นแม้ว่าฉันต้องการที่จะพิมพ์วันที่ของวันพรุ่งนี้ในรูปแบบ mm / dd / yyyy - และฉันทำไม่ได้ - ฉันไม่สามารถทำสิ่งนี้ได้

ทางออกเดียวที่เป็นไปได้ที่ฉันพบอยู่ที่นี่โดยที่ Kevin Traas แนะนำให้สร้างไฟล์แบตช์เพื่อสร้างงานที่กำหนดเวลาไว้ก่อนเที่ยงคืนที่รอสองสามนาที ฉลาด atแต่ไม่มีที่ไหนเลยใกล้เป็นความสะดวกที่


@Lijo ลิงก์นั้นไม่มีข้อมูลใด ๆ เกี่ยวกับวิธีกำหนดเวลาการเริ่มต้นใหม่
ลุคแซมพ์สัน

นี่เป็นเพียงความโง่เขลาทั้งหมดเพื่อแทนที่ AT ด้วย schtasks ที่ใช้ไม่ได้ ทำไมพวกเขาทำทั้งสองไม่ได้? กระตุก!
midenok

คำตอบ:


13

shutdownคำสั่งตัวเองมีพารามิเตอร์ล่าช้า/tที่ล่าช้าปิดสำหรับจำนวนวินาทีถึง 10 ปี หากคุณต้องการกำหนดเวลาปิดเครื่องใน 14 ชั่วโมงพูดว่าคุณอาจทำงาน

shutdown /r /t 50400

คุณอาจเพิ่มเหตุผลด้วย/dพารามิเตอร์หรือความคิดเห็นด้วย/c; วิ่งshutdown /?เพื่อดูรายละเอียด


9

แม้จะมีเอกสารที่พารามิเตอร์ดูเหมือนจะเข้ากันได้กับ/SD /SC ONCEสร้างงานให้สำเร็จในวันที่ให้ในเวลาที่กำหนด (ทดสอบกับ W8 และ W7)

นอกจากนี้เอกสาร XP สำหรับschtasks.exeไปจนถึงกล่าวว่า/SDพารามิเตอร์ที่จำเป็นเมื่อใช้/SC ONCEดังนั้นฉันคิดว่ามีจำนวนสคริปต์ที่พอใช้โดยใช้การรวมกัน

ตัวอย่าง:

C:\Users\Mitch>schtasks /create /sc once /tn restart /tr "shutdown -r -f ""restart""" /st 23:00 /sd 2013-06-13
SUCCESS: The scheduled task "restart" has successfully been created.

C:\Users\Mitch>

หากไม่ตรงกับเอกสารของคุณให้พิจารณาสร้างไฟล์ XML โดยตรง ( schema อยู่ที่นี่ ) ซึ่งได้รับการสนับสนุนอย่างแน่นอนและสนับสนุนงานที่กำหนดให้ทำงานทันทีในวันที่ในอนาคต เป็นวิธีที่ง่ายที่จะได้รับไฟล์ที่เหมาะสมคือการสร้างมันขึ้นมาใน Task Scheduler mmcสแน็ปและใช้คำสั่งการส่งออก

ตัวอย่าง:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2013-06-12T21:20:51.004181</Date>
    <Author>FOOBAR\Mitch</Author>
  </RegistrationInfo>
  <Triggers>
    <TimeTrigger>
      <StartBoundary>2013-06-13T22:20:29</StartBoundary>
      <Enabled>true</Enabled>
    </TimeTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>FOOBAR\Mitch</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>Your command here</Command>
    </Exec>
  </Actions>
</Task>

คำสั่งที่จะนำเข้า:

schtasks /CREATE /TN "Task Name" /XML filename.xml

ขอบคุณสำหรับเคล็ดลับเกี่ยวกับ/sdการสนับสนุน นั่นเป็นเรื่องที่น่าสนใจเกี่ยวกับการนำเข้า XML ด้วยเช่นกัน แต่โดยส่วนตัวแล้วฉันไม่สนใจที่จะทำกับเอกสาร atดังนั้นอย่างน้อยนี้เป็นไปได้เพียงแค่มากยากมากขึ้นกว่าที่เคยเป็นด้วย
ลุค Sampson

Mildy น่าสนใจ: /sdใช้งานไม่ได้กับ/sc onceWindows Server 2008 มันส่งผลให้ERROR: Incorrect Start Date.
Luke Sampson

4
อืม ... ฉันทดสอบ Server 2008 SP2 และ Server 2008 R2 เพิ่มเติมโดยไม่มีปัญหา ฉันจะทราบว่ารูปแบบวันที่นั้นอ้างอิงจากรูปแบบวันที่ / เวลาในท้องถิ่นของคุณและต้องมีเลขศูนย์นำหน้า ในการเริ่มต้น EN-US /SD 06/14/2013ติดตั้งนี้จะนำไปสู่การจัดรูปแบบเช่น
มิทช์

2

ฉันสิ้นสุดการสร้างrunat.ps1เพื่อทำซ้ำคุณสมบัติบางอย่างของatผสมผสานภูมิปัญญาจากคำตอบของมิทช์

ไวยากรณ์คือrunat (time) (command)เช่น

runat 2am shutdown -r -f -c "restarting the server"
runat 10:15 msg * it`'s 10:15 everyone!

ถ้าคุณก็คิดถึงวันเก่า ๆ ที่ดีเมื่อคุณไม่ต้องพิมพ์ ...

schtasks /create /ru system /rl highest /sc once /tn restart /tr shutdown -r -f -c \"restarting the server\" /st 02:00 /sd 06/15/2013

... จากนั้นคุณสามารถติดตั้งโดยใช้คำสั่ง powershell นี้:

iex (new-object net.webclient).downloadstring('https://gist.github.com/lukesampson/5779205/raw/install.ps1');install runat https://gist.github.com/lukesampson/5778559/raw

หรือคุณเองสามารถดาวน์โหลดrunat.ps1สคริปต์ที่นี่


1
+1 นั่นเป็นสคริปต์ที่มีประโยชน์มาก ... นี่เป็นสิ่งที่ฉันโปรดปราน
มิทช์

1

ฉันใช้สิ่งนี้ในสคริปต์สำหรับ 2012 R2 และทำงานได้ดี มันจะสร้างงานประจำวันที่รีสตาร์ทเซิร์ฟเวอร์ @ 4:30 am

schtasks /create /ru system /rl highest /sc DAILY /tn restart /tr "shutdown /r /f /c "Restarting" /st 04:30

โปรดตรวจสอบให้แน่ใจว่าคุณเรียกใช้สิ่งนี้จากพรอมต์ CMD ด้วยสิทธิ์ระดับผู้ดูแล

แอนดี้


1

สคริปต์ PowerShell อีกอันหนึ่งที่จะรีบูทคอมพิวเตอร์ในวันรุ่งขึ้นตามเวลาที่กำหนด

$tomorrowDate = (get-date).AddDays(1).ToString("dd/mm/yyyy")

schtasks /delete /tn restart /f
schtasks /create /sc once /ru MyDomain\administrator /rp /tn restart /tr "shutdown -r -f" /st 07:13 /sd $tomorrowDate

0

ฉันขอแนะนำให้ใช้คำสั่ง schtasks กับพารามิเตอร์ / f

ใช้ / f หากมีงานที่มีชื่อเหมือนกันจะมีการแก้ไข

มันมีประโยชน์มากสำหรับการใช้งานผ่านสคริปต์

ตัวอย่างเต็มรูปแบบของเซิร์ฟเวอร์กำหนดเวลาเริ่มต้นใหม่:

schtasks /create /ru system /rl highest /sc DAILY /tn Reinicio /tr "shutdown /r /f /t 0 /c "Reinicio"" /st 22:30 /F

แยกจาก: http://www.sysadmit.com/2016/09/windows-programar-apagado-o-reinicio-automatico.html


0

หากเป้าหมายคือการรีบูตหลังจากติดตั้งการอัปเดตคุณสามารถใช้โมดูล PSWindowsUpdate เพื่อติดตั้งการอัปเดต คุณสามารถดาวน์โหลดได้จากที่นี่ เมื่อติดตั้งแล้วเพียงเปิด Powershell แล้วพิมพ์

Get-WuInstall -AcceptAll -AutoReboot

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.