Bir sunucuyu Windows 2012'deki komut satırından yeniden başlatmayı nasıl zamanlayabilirim?


15

Örneğin, sabahın erken saatlerinde güncelleştirmeleri yüklemeyi bitirmek için bir kerelik bir sunucu yeniden başlatma zamanlamak istiyorum. Bunu Windows 2012'deki komut satırından nasıl yapabilirim?

Windows 2008'de şu atkomutu kullanırdım,

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

ve öğleden sonra geri kalanını çıkardı.

Ama Windows 2012'de, bu komutu çalıştırmak bana şunu söyler:

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

Yani schtasks.exe ile eşdeğer komut olabilir

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

Çok unutulabilir olmasının yanı sıra, bu komutun önemli bir dezavantajı var : Görevi bugün 02:00 için planlıyor - 01:00 'de çalıştırmak için uyanmadıkça çok fazla kullanım yok.

Schtasks.exe yardımına göre /sd, başlangıç ​​tarihini ayarlama anahtarı uygulanamaz /sc once. Yani yarının tarihini aa / gg / yyyy biçiminde yazmak istesem bile - ve ben yapamam - bunu yapamam.

Bulduğum tek olası çözüm burada Kevin Traas sonra birkaç dakika bekler ve gerçekte çalıştırmak istediğiniz komutu çalıştırmak için başka zamanlanmış bir görevi oluşturur gece yarısından hemen önce zamanlanmış görev oluşturmak için toplu iş dosyası oluşturma önerir nerede. Zeki, ama hiçbir yerde olduğu kadar yakın at.


@Lijo bu bağlantı, yeniden başlatmanın nasıl planlanacağı hakkında herhangi bir bilgi içermiyor.
Luke Sampson

Bu, AT'yi kullanılamaz schtasks ile değiştirmek için sadece aptallıktır. Neden ikisini birden yapamadılar? Gerizekalı!
midenok

Yanıtlar:


13

shutdownKomut kendisi bir gecikme parametresi vardır /t10 yıla kadar saniye sayısı için bir kapatma geciktirir. 14 saat içinde bir kapanış planlamak istiyorsanız, örneğin,

shutdown /r /t 50400

Ayrıca /dparametreyle bir neden veya /c; shutdown /?ayrıntılar için çalıştırın .


9

Dokümantasyona rağmen, /SDparametre /SC ONCE. Görev, sağlanan tarihte, sağlanan saatte çalışacak şekilde başarıyla oluşturulmuştur. (W8 ve W7'de test edilmiştir)

Buna ek olarak, XP belgelerischtasks.exe , /SDparametrenin kullanıldığında gerekli olduğunu söylemek için gidiyor /SC ONCE, bu yüzden kombinasyonu kullanarak çok sayıda komut dosyası olduğunu hayal ediyorum.

Misal:

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>

Belgelere karşı çıkmak sizinle iyi oturmuyorsa , kesinlikle desteklenen ve kesinlikle gelecekteki bir tarihte bir kez çalışması planlanan bir görevi destekleyen XML dosyasını oluşturmayı ( şema burada ) düşünün . Uygun dosyayı almanın kolay bir yolu, dosyayı Görev Zamanlayıcı mmcek bileşeninde oluşturmak ve dışa aktar komutunu kullanmaktır .

Misal:

<?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>

İçe aktarma komutu:

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

/sdDesteklenmeyle ilgili ipucu için teşekkürler . Bu XML içe aktarma konusunda da ilginç - kişisel olarak belgelere karşı gelmek umurumda değil. Yani en azından bu mümkün - eskiden olduğundan çok, çok daha zor at.
Luke Sampson

Mildy ilginç: /sdçalışmaz /sc onceO sonuçlanır Windows üzerinde Server 2008ERROR: Incorrect Start Date.
Luke Sampson

4
Hmm ... Ayrıca Server 2008 SP2 ve Server 2008 R2'yi de sorunsuz bir şekilde test ettim. Tarih biçiminin yerel tarih / saat biçiminize dayandığını ve önde gelen sıfırların gerekli olduğunu not edeceğim. Varsayılan EN-us kurulumunda bu, biçimlendirmeye yol açacaktır /SD 06/14/2013.
Mitch

2

Ben oluşturarak sona erdi runat.ps1basit bazı özellikleri çoğaltmak için atMitch'in cevap bilgelik içeren,.

Sözdizimi runat (time) (command), ör.

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

Siz de yazmak zorunda olmadığınız eski güzel günler için nostaljik iseniz ...

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

... sonra bu powershell komutunu kullanarak yükleyebilirsiniz:

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

İsterseniz runat.ps1komut dosyasını manuel olarak buradan indirebilirsiniz .


1
+1 Bu çok yararlı bir senaryo ... Bu kesinlikle favorilerime gidiyor.
Mitch

1

Bunu 2012 R2 için bir senaryoda kullandım ve güzel çalışıyor; Sunucuyu yeniden başlatan günlük bir görev oluşturur @ 4:30

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

Lütfen bunu Yönetici ayrıcalıklarına sahip bir CMD isteminden çalıştırdığınızdan emin olun.

Andy


1

Yalnızca ertesi gün belirtilen saatte bilgisayarı programlı olarak yeniden başlatmak için başka bir powershell betiği

$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

/ F parametresiyle schtasks komutunu kullanmanızı öneririm.

/ F kullanılarak, aynı ada sahip bir görev varsa değiştirilir.

Komut dosyaları aracılığıyla görevleri dağıtmak için çok kullanışlıdır.

Zamanlama sunucusunun yeniden başlatılmasının tam bir örneği:

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

Alıntı: http://www.sysadmit.com/2016/09/windows-programar-apagado-o-reinicio-automatico.html


0

Hedef, güncellemeleri yükledikten sonra yeniden başlatmaksa, güncellemeleri yüklemek için PSWindowsUpdate modülünü kullanabilirsiniz. Buradan indirebilirsiniz . Kurulduktan sonra, Powershell'i açın ve yazın

Get-WuInstall -AcceptAll -AutoReboot

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.