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

잊을 수없는 것 외에도이 명령에는 또 다른 중요한 단점 이 있습니다.이 명령은 오늘 오전 2시에 작업을 예약 합니다. 오전 1시에 깨어 나면 실행하지 않습니다.

schtasks.exe에 대한 도움말에 /sd따라 시작 날짜 설정 스위치는 적용 할 수 없습니다 /sc once. 따라서 내일 날짜를 mm / dd / yyyy 형식으로 입력하고 싶더라도 그렇게 할 수는 없습니다.

내가 찾은 유일한 해결책은 here입니다 . Kevin Traas는 자정 직전에 예약 된 작업을 생성하기 위해 배치 파일을 생성하도록 제안합니다. 몇 분 동안 기다린 다음 실제로 예약하려는 다른 명령을 실행하기 위해 예약 된 다른 작업을 생성합니다. 영리하지만 편리한 곳은 없습니다 at.


해당 링크에 @Lijo에는 재시작 예약 방법에 대한 정보가 없습니다.
Luke Sampson

이것은 AT를 사용할 수없는 schtask로 대체하는 완전히 어리석은 일입니다. 왜 둘 다 만들 수 없습니까? 저크!
midenok

답변:


13

shutdown명령 자체는 지연 매개 변수를 가지고 /t10 년까지 초 단위의 종료를 지연시킵니다. 14 시간 안에 종료를 예약하려면 다음을 수행하십시오.

shutdown /r /t 50400

/d매개 변수를 사용 하여 이유를 추가 하거나 /c;를 사용 하여 주석을 추가 할 수도 있습니다 . shutdown /?자세한 내용은 실행 하십시오.


9

설명서에도 불구하고이 /SD매개 변수는와 호환되는 것 같습니다 /SC ONCE. 제공된 시간에 제공된 날짜에 실행되도록 태스크가 작성되었습니다. (8 주차 및 7 주차 테스트)

또한에 대한 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 파일을 직접 생성하는 것을 고려 하십시오 ( 스키마는 여기에 있습니다 ). 확실히 지원되며 미래 날짜에 한 번 실행되도록 예약 된 작업을 확실히 지원합니다. 적절한 파일을 얻는 쉬운 방법은 작업 스케줄러 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.
Luke Sampson 2016 년

흥미로운 점 : Windows Server 2008 /sd에서는 작동하지 않습니다 /sc once. 결과ERROR: Incorrect Start Date.
Luke Sampson

4
흠 ... 추가로 Server 2008 SP2 및 Server 2008 R2를 추가로 테스트했습니다. 날짜 형식은 현지 날짜 / 시간 형식을 기반으로하며 선행 0이 필요합니다. 기본 EN-us 설치에서이 형식은 다음과 같습니다 /SD 06/14/2013.
Mitch

2

나는 Mitch 's answer의 지혜를 통합하여 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 매우 유용한 스크립트입니다. 이것은 제가 가장 좋아하는 것입니다.
Mitch

1

나는 이것을 2012 R2의 스크립트에서 사용했고 잘 작동합니다. 오전 4시 30 분에 서버를 다시 시작하는 매일 작업을 만듭니다.

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.