Hvordan lukker jeg Windows ned, genstarter eller logger af via en bat-fil?

Jeg har brugt Remote Desktop Connection til at komme ind på en arbejdsstation. Men i dette miljø kan jeg ikke bruge strømindstillingerne i startmenuen. Jeg har brug for en alternativ måde at lukke ned eller genstarte på.

Hvordan styrer jeg min computers strømtilstand via kommandolinjen?

Løsning

De mest almindelige måder at bruge shutdown kommandoen på er:

  • shutdown -s - Lukker ned.

  • shutdown -r - Genstarter.

  • shutdown -l - Logger af.

  • shutdown -h - Går i dvale.

    Note: Der er en almindelig faldgrube, hvor brugere tror, at -h betyder "hjælp" (hvilket det gør for alle andre kommandolinjeprogrammer... undtagen shutdown.exe, hvor det betyder "hibernate"). De kører derefter shutdown -h og slukker ved et uheld deres computere. Pas på med det.

  • shutdown -i - "Interaktiv tilstand". I stedet for at udføre en handling, vises en GUI-dialog.

  • shutdown -a - Afbryder en tidligere nedlukningskommando.

Ovenstående kommandoer kan kombineres med disse ekstra muligheder:

  • -f - Tvinger programmer til at afslutte. Forhindrer, at nedlukningsprocessen går i stå.

  • -t - Indstiller tiden indtil nedlukning. Brug -t 0 for at lukke ned med det samme.

  • -c - Tilføjer en lukningsmeddelelse. Meddelelsen vil ende i hændelsesloggen.

  • -y - Tvinger et "yes" svar på alle forespørgsler om nedlukning.

    Bemærkning: Denne indstilling er ikke dokumenteret i nogen officiel dokumentation. Den blev opdaget af disse StackOverflow-brugere.


Jeg vil gerne sikre mig, at nogle andre rigtig gode svar også nævnes sammen med dette svar. Her er de i ingen bestemt rækkefølge.

Kommentarer (7)

Hvis du er på en fjernmaskine, kan du også tilføje indstillingen -f for at fremtvinge genstart. Ellers kan din session lukke, og en stædig app kan hænge systemet op.

Jeg bruger dette, når jeg ønsker at fremtvinge en øjeblikkelig genstart:

shutdown -t 0 -r -f

For en mere venlig "giv dem lidt tid" mulighed, kan du bruge dette:

shutdown -t 30 -r

Som du kan se i kommentarerne, er -f underforstået af timeout'en.

Brutus 2006 er et værktøj, der giver en GUI til disse indstillinger.

Kommentarer (3)

Oprindeligt svar: okt. 2008

Du har også fået alle "rundll32.exe shell32.dll" serier:

(se opdatering nedenfor)

  • rundll32.exe user.exe,**ExitWindows** [Hurtig nedlukning af Windows]

  • rundll32.exe user.exe,**ExitWindowsExec** [Genstart af Windows]

      rundll32.exe shell32.dll,SHExitWindowsEx n

hvor n står for:

  • 0 - LOGOFF.
  • 1 - SHUTDOWN.
  • 2 - REBOOT.
  • 4 - FORCE.
  • 8 - POWEROFF.

(kan kombineres -> 6 = 2+4 FORCE REBOOT)


Opdatering april 2015 (6+ år senere):

(1) gør venligt opmærksom på i kommentarerne:

Don't use rundll32.exe for this purpose. Den forventer, at den funktion, du har givet på kommandolinjen, har en meget specifik metodesignatur - den passer ikke til metodesignaturen for ExitWindows.

Raymond CHEN skrev:

Den funktionssignatur, der kræves for funktioner, der kaldes af rundll32.exe, er:

void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
       LPSTR pszCmdLine, int nCmdShow);

Det har ikke forhindret folk i at bruge rundll32 til at kalde tilfældige funktioner, der ikke er designet til at blive kaldt af rundll32, som f.eks. user32 LockWorkStation eller user32 ExitWindowsEx.

(ups)

Den egentlige funktionssignatur for ExitWindowsEx er:

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

Og for at gøre det krystalklart:

Rundll32 er et levn fra Windows 95, og det er blevet forældet siden i hvert fald Windows Vista, fordi det overtræder en masse moderne tekniske retningslinjer.

Kommentarer (6)