nowologix
Goto Top

Batch - Remote Shutdown

PC's im Netzwerk anzeigen und Herunterfahren

Hallo
Ich habe hier ein kleines netztwerk aus 8 Rechnern.
Ich würde gerne vollgende Befehle, Funktionen kennen:

1. PC's im Netzwerk Anzeigen.
z.B.:
NOWO-82930523
LUKAS-92352364
PETER-23527352
...

2. Gewählten PC herunterfahren.

Der gewählte PC muss dann halt irgendwie als Variable angezeigt werden.


Habt ihr dafür eine lösung :- ( ??
Ich weis es gibt programme, aber ich würde das liebendgerne mitner bat machen.
( gibt glaubich den befehl schutdown.. kann man den nicht mit admin rechten senden?)

Content-Key: 54261

Url: https://administrator.de/contentid/54261

Printed on: April 20, 2024 at 03:04 o'clock

Member: miniversum
miniversum Mar 16, 2007 at 14:54:30 (UTC)
Goto Top
Spontan, ungetestet und ohne Fehler abzufangen würde ich es so versuchen:
@echo off
setlocal enabledelayedexpansion
set wahl=0
net view /all>%temp%\netusers.txt
FOR /F "skip=3 delims=" %%A in (%temp%\netusers.txt) do (  
set /a wahl=!wahl!+1
echo !wahl!: %%A
)
set /p wahl=Bitte Computer wählen (1-%wahl%): 
set "auswahl="  
set /a wahl=%wahl%+2
FOR /F "skip=%wahl% delims=" %%A in (%temp%\netusers.txt) do if not defined %auswahl% set auswahl=%%A  
shutdown /m %auswahl%

miniversum
Member: tbw-01
tbw-01 Mar 16, 2007 at 15:43:10 (UTC)
Goto Top
net view /all>%temp%\netusers.txt

So klappt besser:
net view>%temp%\netusers.txt


Cu,
TBW
Member: bastla
bastla Mar 16, 2007 at 16:10:08 (UTC)
Goto Top
... und so:
FOR /F "skip=%wahl% delims=" %%A in (%temp%\netusers.txt) do if not defined %auswahl% set auswahl=%%A
FOR /F "skip=%wahl% delims=" %%A in (%temp%\netusers.txt) do if not defined auswahl set auswahl=%%A  

Grüße
bastla
Member: miniversum
miniversum Mar 16, 2007 at 17:04:37 (UTC)
Goto Top
ok.. wie gesagt war ungetestet.
Interessant aber. Unter vista heißt das net view /all unter xp net view

miniversum
Member: Nowologix
Nowologix Mar 16, 2007 at 23:32:55 (UTC)
Goto Top
Also irgendwie funkioniert das nicht richtig o.O
Bin ich zu naiv ? oder liegt es an was anderem.. ?

Es soll ungefähr so sein:

:ShutdownPC
@echo Im Netzwer vorhandene PC's:
@echo.
(1) : %REMOTEPC1%
(2) : %REMOTEPC2%
(3) : %REMOTEPC3%
(4) : %REMOTEPC4%
@echo.
set /P CHS=Eingabe:
if /I "%CHS%"=="1" goto :Shutdown REMOTEPC1
if /I "%CHS%"=="2" goto :Shutdown REMOTEPC2
if /I "%CHS%"=="3" goto :Shutdown REMOTEPC3
if /I "%CHS%"=="4" goto :Shutdown REMOTEPC4
goto :ShutdownPC


Ich weis :- ( ich habe nicht sonderlich viel ahnung von der Arbeit mit Variablen..
Wie könnte man denn das ganze den Umsetzen ??
Member: bastla
bastla Mar 17, 2007 at 02:25:35 (UTC)
Goto Top
Hallo Nowologix!

So könnte es gehen:
@echo off & setlocal
set "Comp=%Temp%\Computers.txt  
echo  : Ende>"%Comp%"  
for /f "tokens=1-2 delims=:\ " %%i in ('net view^|more +3^|findstr /n "\\"') do @echo [%%i] : %%j>>"%Comp%"  
:Liste
cls
type "%Comp%"  
echo.
:Eingabe
set Eingabe=
set /p Eingabe=Welchen Computer herunterfahren? 
if [%Eingabe%]== goto :Liste
if [%Eingabe%]== goto :eof
for /f "tokens=2 delims=: " %%r in ('findstr /c:"[%Eingabe%]" "%Comp%"') do shutdown -s -m "\\%%r"  
goto :Eingabe
Wird bei der Eingabe der Computernummer nur die Eingabetaste gedrückt, werden der Bildschirm gelöscht und die Computerliste neu angezeigt.

Zum Testen bietet es sich an, den Shutdown mit dem Zusatz "-t 60" zu verzögern. Zum Abbrechen des Shutdown-Vorganges vom Prompt eingeben:
shutdown -a -m "\\Computername"  

Grüße
bastla

[Edit] -m ergänzt [/Edit]
[Edit2] Computernamen unter Anführungszeichen gesetzt [/Edit2]
Member: Nowologix
Nowologix Mar 17, 2007 at 12:47:57 (UTC)
Goto Top
Wunderbar !!!
Ein riesiges Dankeschön an dich bastla !!

--
Nur noch 2 kleine Fragen:
1.Listet er Alle PC's auf die im Netzwerk sind ?
Und fügt auch automatisch die Nummer hinzu ?

2.Wenn ich mich selbst damit Herunterfahre erscheint eine ShutDown Meldung:
"Das System wird herunter gefahren. Bitte speichern sie... usw. ect. NOCH 29 SEKUNDEN"
Obwohl im script ja : shutdown -s -m steht.
Also nichts von Message oder Delay.
Member: bastla
bastla Mar 17, 2007 at 13:13:47 (UTC)
Goto Top
Hallo Nowologix!

1.Listet er Alle PC's auf die im Netzwerk sind ?
... sofern sie aktuell erreichbar sind ...
Und fügt auch automatisch die Nummer hinzu ?
Ja; wird immer für die aktuell erreichbaren Rechner von 1 beginnend hochgezählt.
Falls Du immer die gleiche Nummer für Deine PC verwenden willst, kannst Du ja die Liste (siehe Datei "%temp%\Computers.txt") auch fix erstellen (und an anderer Stelle speichern; im Batch dazu die Zeile 2 anpassen und die Zeilen 3 und 4 entfernen) - Nachteil: Es werden dann auch Rechner angezeigt, die bereits ausgeschaltet sind.

2.Wenn ich mich selbst damit Herunterfahre erscheint eine ShutDown Meldung
Defaultmäßig wird 30 s Delay verwendet und auf den Shutdown hingewiesen - der mit "-c" anzugebende Kommentar ist nur als Zusatzinformation für das Meldungsfenster gedacht.

Noch genauer steuern kannst Du übrigens den Shutdown mit PsShutdown.

Grüße
bastla
Member: Nowologix
Nowologix Mar 17, 2007 at 13:20:33 (UTC)
Goto Top
Topp Vielen dank.
Schon fast ein Tutorial.. ;- )
Member: Nowologix
Nowologix Mar 17, 2007 at 15:24:34 (UTC)
Goto Top
Oh ich habe das ganze mal grade an einem PC im Netzwerk getestet..

Es erscheint dann:
BEISPIEL:

: Ende
[1] : NPACMAN-BB2412513
[2] : EIGENER PC

Eingabe: 1

Der Netzwerkpfad wurde nicht gefunden.

Liegt es daran das ich keine Admin rechte auf dem Genannten PC habe ?
Wie könnte ich das umgehen ?
Oder findet er den Pfad wirklich nicht ?

edit.: sorry doppel post :- (
Member: bastla
bastla Mar 17, 2007 at 15:47:13 (UTC)
Goto Top
Hallo Nowologix!

Vorweg: ohne Adminrechte wird's wohl nicht gehen ...

Oder findet er den Pfad wirklich nicht ?
Das kannst Du feststellen, indem Du im Batch das "@echo off" weg lässt und Dir ansiehst, wie der shutdown-Befehl vom Batch aus geschrieben wird. Zur Kontrolle kannst Du außerdem den gleichen Befehl selbst eingeben.

Es könnte sein, dass der "-" im Computernamen stört - ändere zur Sicherheit den Shutdown-Befehl auf
 ... shutdown -s -m "\\%%r"  

Ich hole das im Listing oben auch nach.

Grüße
bastla
Member: Nowologix
Nowologix Mar 17, 2007 at 15:56:06 (UTC)
Goto Top
Er zeigt hier anscheinend nicht die PC, sondern die Benutzernamen an.
Bei mir steht z.B.

NOWO-BB21425146

andere PC's werden jedoch nur so angezeigt z.B:

PETER
KLAUS
MANFRED


Bei dem Shutdown befehl wird z.B.:
shutdown -s -m PETER
ausgeführt.

Sollte das nicht:
shutdown -s -m PETER-BB2151353\Peter
heißen ??
Member: bastla
bastla Mar 17, 2007 at 16:10:21 (UTC)
Goto Top
Hallo Nowologix!

Sollte das nicht:
shutdown -s -m PETER-BB2151353\Peter
heißen ??
Das sollte heißen
shutdown -s -m "\\PETER-BB2151353"  
(nach der oben angesprochenen Änderung hinsichtlich der Anführungszeichen).
Welches System verwendest Du eigentlich, und was liefert der Befehl "net view"? Unter 2000 / XP erhalte ich eine Ausgabe nach folgendem Muster:
Servername             Beschreibung

-------------------------------------------------------------------------------
\\SERVERNAME1
\\SERVERNAME2
\\WSNAME1
...
\\WSNAME24
Der Befehl wurde erfolgreich ausgeführt.

Grüße
bastla
Member: miniversum
miniversum Mar 17, 2007 at 16:15:23 (UTC)
Goto Top
Jetzt nochmal meine überarbeitete Version udn auch unter nem win xp pro getestet...
@echo off
setlocal enabledelayedexpansion
set maxwahl=0
net view>%temp%\netusers.txt
FOR /F "skip=3 delims=" %%A in (%temp%\netusers.txt) do set /a maxwahl=!maxwahl!+1  
set wahl=0
FOR /F "skip=3 delims=" %%A in (%temp%\netusers.txt) do (  
set /a wahl=!wahl!+1
if !wahl! lss %maxwahl% echo !wahl!: %%A
)
set /a wahl=%wahl%-1
set /p wahl=Bitte Computer wählen (1-%wahl%): 
set "auswahl="  
set /a wahl=%wahl%+2
FOR /F "skip=%wahl% delims=" %%A in (%temp%\netusers.txt) do if not defined auswahl set auswahl=%%A  
ECHO shutdown /s /m %auswahl%

miniversum
Member: Nowologix
Nowologix Mar 17, 2007 at 16:46:10 (UTC)
Goto Top
hmm wie gesagt...
Es erscheint immernoch nur PETER
und nicht PETER-BB2252....

Bei beiden möglichkeiten ... und auch mit Anführungsstrichen..
Member: bastla
bastla Mar 17, 2007 at 17:39:06 (UTC)
Goto Top
Hallo nowologix!

Darf ich Dich einladen, den Befehl "net view" an der Commandline einzugeben und die Ausgabe des Befehls zu posten?

Grüße
bastla
Member: Nowologix
Nowologix Mar 17, 2007 at 17:43:01 (UTC)
Goto Top
*räusper* ok tut mir leid.. der name des PC's ist nicht PETER-BB224343....
sondern einfach nur Peter ^^

Aber wenn das alles richtig ist... wieso heißt es nun immernoch "Pfad nicht gefunden" ?
Member: bastla
bastla Mar 17, 2007 at 17:50:53 (UTC)
Goto Top
Also weiter von der Commandline:
shutdown -s -m \\PETER
bringt welches Ergebnis (Anführungszeichen spielen in diesem Fall keine Rolle)?

bastla
Member: Nowologix
Nowologix Mar 17, 2007 at 17:54:42 (UTC)
Goto Top
shutdown -s -m \\PETER

Der Netzwerkpfad wurde nicht gefunden
Member: bastla
bastla Mar 17, 2007 at 18:18:24 (UTC)
Goto Top
Wenn der Rechner PETER grundsätzlich erreichbar ist (ping), fällt mir momentan keine vernünftige Erklärung dazu ein - fehlende Admin-Rechte sollten nämlich eher zu folgender Fehlermeldung führen: "Der Client besitzt ein erforderliches Recht nicht."

bastla
Member: Nowologix
Nowologix Mar 17, 2007 at 18:25:55 (UTC)
Goto Top
Ping Funkioniert.
Der andere Rechner antwortet und ist demnach online/ereichbar.

Nur dieser verdammte Shutdown -s -m PETER befehl funst nicht..
Member: Nowologix
Nowologix Mar 17, 2007 at 23:13:54 (UTC)
Goto Top
Ok habe das ganze mal bei einem Freund versucht.
Bei ihm fehlen die Rechte...

Bei mir scheint es am Router oder an änlichem zu liegen.


Wie gebe ich denn ein Passwort und-oder einen Benutzer namen beim shutdown ein ?
Ich weis es gibt ein besonderes shutdown tool.. aber die bat soll standalone sein..
sie muss funkionieren ohne das vorher eine datei ins system32 verzeichniss kopiert werden muss.
Member: dig-mail
dig-mail Mar 26, 2007 at 11:58:47 (UTC)
Goto Top
hallo Nowologix,

es liegt bei dir nicht am router, du musst in der windows-firewall die "datei- und druckerfreigabe" freigeben,
dann sollte der pc schon mal erreichbar sein.

aber wenn nicht der gleiche benutzer auf dem anderen rechnern läuft, kannst du diese auch nicht runterfahren.
möglich wäre es nur wenn du den telnet-server auf jedem rechner starten würdest!

mfg

D.I.G