Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst PsTools (psloggedon) in eine Batchdatei einpflegen

Mitglied: FARYS

FARYS (Level 1) - Jetzt verbinden

26.06.2007, aktualisiert 18.07.2007, 9470 Aufrufe, 13 Kommentare

Hi,

Ich suche eine Möglichkeit, um eine Gruppe von PCs automatisch herunterzufahren und sie wieder am nächsten Tag hochfahren. Das Ganze soll aber passieren, nur wenn KEIN User angemeldet ist. Also..ich habe nachgeforscht , nach einem passenden Tool, etc., das das Überprüfen, ob j-d noch am PC angemeldet ist, übernimmt und das System entsprechend runterfährt oder nicht.

Ich habe sehr oft auf "pstools" von Microsotf (Tools hat Firma Winternals geschrieben, aber Microsoft hat die dann gekauft;)) gestoßen und auf meinem Rechner installiert. Die Tools sind auf microsoft-seite zum Herunterladen und das Paket enthält mehrere Tools wie:
  • psloggedon = zeigt, wer in einem System angemeldet ist....
  • psshutdown = fährt das System automatisch runter (gibt’s mehrere Optionen dazu)

So....ich habe psloggedon auf EINEM PC ausprobiert, es hat hervorragend funktioniert, d.h. ich bakam folgende Ausgabe:
01.
Y:\admin\scripts\ordnername>psloggedon -l -x \\ pcname1  [= cmd-Eingabe] 
02.
 
03.
loggedon v1.33 - See who's logged on 
04.
Copyright ® 2000-2006 Mark Russinovich 
05.
Sysinternals - www.sysinternals.com 
06.
 
07.
Users logged on locally: 
08.
     NT-AUTORIT?T\LOKALER DIENST 
09.
     NT-AUTORIT?T\NETZWERKDIENST 
10.
     DOMÄNEname\user1                     ----------------------> hier steht der Username 
11.
     NT-AUTORIT?T\SYSTEM
Jetz wollte ich natürlich nicht nur EINEN Comp auswerten, sondern alle. Dazu habe ich eine Liste mit Computernamen erstellt und sie zusammen mit Batch-Dateien in einen Ordner gepackt.

[die Aufruf-Batchdatei sieht folgend aus:
01.
echo off 
02.
 
03.
del rechner-psloggedon.txt 
04.
for /f "delims=" %%i in ('type "rechner-list.txt"') do call "logg.bat" "%%i" >> rechner-psloggedon.txt
"logg.bat" enthält:
01.
echo off 
02.
 
03.
psloggedon -l -x  
04.
 
05.
 
06.
goto :EOF

Das Problem ist: wenn ich das Tool "psloggedon" durch meine Batchdateien aufrufe bekomme ich folgende Ausgabe:
01.
Users logged on locally: 
02.
     NT-AUTORITÄT\LOKALER DIENST 
03.
     NT-AUTORITÄT\NETZWERKDIENST 
04.
     DOMÄNEname\meinName                          -----------> ich war überhaupt dort nicht eingeloggt !! 
05.
     DOMÄNEname\meinAdminName                ----------->  wie oben  
06.
     NT-AUTORITÄT\SYSTEM 
07.
 
08.
Users logged on locally: 
09.
     NT-AUTORITÄT\LOKALER DIENST 
10.
     NT-AUTORITÄT\NETZWERKDIENST 
11.
     DOMÄNEname\meinName                          -----------> wie oben 
12.
     DOMÄNEname\meinAdminName                ----------->  wie oben  
13.
     NT-AUTORITÄT\SYSTEM
Als ob der Script auf diese PC nicht zugreifen könnte....oder sind die Befehle in Batchdateien falsch???
Falls jemand Fehler sieht, schreibt mir bitte zurück!! Wäre nett ;)

Thx,

Schöne Grüsse
Mitglied: bastla
26.06.2007 um 15:45 Uhr
Hallo FARYS!

Wenn Deine Batch-Datei wie beschrieben aussieht, ist das Ergebnis leicht zu erklären: Du übergibst zwar den Rechnernamen an das Unterprogramm (das, ganz nebenbei, nicht in einer eigenen Datei stehen muss bzw gar nicht nötig wäre), verwendest diesen aber dort nicht - die entscheidende Befehlszeile im Unterprogramm müsste lauten:
01.
psloggedon -l -x \\%~1
Es sollte aber auch etwa so genügen:
01.
del rechner-psloggedon.txt 
02.
for /f "delims=" %%i in ('type "rechner-list.txt"') do psloggedon -l -x \\%%i >> rechner-psloggedon.txt
Etwas besser zu verwenden werden die Ergebnisse, wenn Du Unnötiges ausfilterst, zB mit
01.
for /f "delims=" %%i in ('type "rechner-list.txt"') do psloggedon -l -x \\%%i|findstr /v "NT-AUTOR logged">> rechner-psloggedon.txt
Grüße
bastla
Bitte warten ..
Mitglied: FARYS
26.06.2007 um 15:57 Uhr
hallo bastla!

danke schön für deine Antwort!! Es hat funktioniert!!
Ich bastle dann weiter, um meine Ergebnisse zu bekommen.

Übrigens: ich habe überhaupt keine Erfahrung mti Batchdeteien, das war so zusagen mein Debiut ;)..deswegen diese Fehler.

Grüsse
FARYS
Bitte warten ..
Mitglied: FARYS
27.06.2007 um 13:50 Uhr
so....das Ganze ist für mich komplizierter als ich dachte ;)
Vielleicht könntets Du (@bastla) oder j-d anders mir weiter helfen..

Jetzt wollte ich weiter in dieser Batchdatei (oder wenn es nötig in einer neuen) eine Abfrage durchführen, um aus der zweiten txt-datei ("rechner-psloggedon.txt") nur diese Werte (PCs) rausfiltern, wo NIEMAND eingeloggt ist und dann mit "psshutdown" diese Rechner herunterzufahren.
Ich vermute, es geht mit "if Errorlevel"-Abfrage, aber wie gesagt, da ich kein Programmierer bin, scheint das Ganze für mich zu verwirrend sein...;).

Wie sollte ich jetzt meine Befehle formulieren?

Und...ist es möglich, dass die Rechnernamen immer behalten werden?, d.h. ob sie in der "rechner-psloggedon.txt"-Datei neben den Ergebnissen (wer da eingeloggt ist) gezeigt werden? zurzeit werden die Rechnernamen gelöscht und nur die Ergebnisse gezeigt.

Danke für die Antworten!

Grüsse
farys
Bitte warten ..
Mitglied: bastla
27.06.2007 um 14:36 Uhr
Hallo FARYS!

Der folgende Entwurf beinhaltet eine Kombination aus "Erstellung der Rechnerliste" und "Durchführen des Herunterfahrens", wobei anzumerken wäre, dass die Liste in diesem Fall eigentlich gar nicht benötigt würde, sondern anstelle des Eintragens in die Liste (nach "if not defined LoggedOn") auch gleich der "Shutdown"-Befehl stehen könnte ...
01.
@echo off & setlocal 
02.
set "RechnerList=D:\Rechner-List.txt" 
03.
set "ShutDownList=D:\Rechner-PsSLoggedOn.txt" 
04.
if exist "%ShutDownList%" del "%ShutDownList%" 
05.
for /f "delims=" %%i in ('type "%RechnerList%"') do call :ProcessComp "%%i" 
06.
goto :ShutEmDown 
07.
:ProcessComp 
08.
ping %~1>nul || goto :eof 
09.
set LoggedOn= 
10.
for /f "delims=" %%u in ('psloggedon -l -x \\%~1^|findstr /v "NT-AUTOR logged"') do set LoggedOn=%%u 
11.
if not defined LoggedOn echo %~1>>"%ShutDownList%" 
12.
goto :eof 
13.
:ShutEmDown 
14.
if exist "%ShutDownList%" for /f "usebackq delims=" %%r in ("%ShutDownList%") do echo Shutdown \\%%r
Das Herunterfahren wird durch die Ausgabe von "Shutdown \\Rechnername" nur simuliert - wenn alles klappt, anstelle des "echo Shutdown \\%%r" den eigentlichen Befehl (ob per "PsShutDown" oder per "shutdown.exe") platzieren.

Anmerkung: Du hast bis jetzt die Betriebssystemversion des Rechners, auf dem der Batch laufen soll, nicht genannt. Sollte es sich um W2000 handeln, müsste die Überprüfung der Erreichbarkeit eines Rechners über "ping" anders erfolgen, da der Errorlevel von W2000 nicht richtig gesetzt wird.

Grüße
bastla
Bitte warten ..
Mitglied: FARYS
02.07.2007 um 10:25 Uhr
hallo,

ich habe Deine Befehle wie sie oben stehen eingepflegt und diese Batchdatei ausgeführt (anstatt "echo shutdown \\%%r" habe ich psshutdown hinzugefügt). Leider bekomme ich überhaupt keine Ausgabe, oder besser gesagt die Befehle werden nicht ausgeführt = nachdem ich meine Batchdatei aufrufe, bekomme ich immer die Meldung:
"Das Gerät ist nicht bereit".

In welchem Zusammenhang könnte das auftreten? Hast Du schon mal was Ähnliches gehabt?
Sollte ich irgendwelche Freigaben auf den Remoterechnern einschalten?

Schöne Grüsse
FARYS
Bitte warten ..
Mitglied: bastla
02.07.2007 um 13:52 Uhr
Hallo FARYS!

Ändere bitte einmal in der ersten Zeile das "@echo off" auf "@echo on" und führe den Batch von der Kommandozeile aus - dadurch kannst Du mitverfolgen, an welcher Stelle genau der Fehler auftritt.

Grüße
bastla
Bitte warten ..
Mitglied: FARYS
02.07.2007 um 15:09 Uhr
hi bastla!

Der Fehler tritt nach der Zeile:

for /f "delims=" %%i in ('type "%RechnerList%"') do call :ProcessComp "%%i"
Das Gerät ist nicht bereit.

..also als ob er den Befehl ":ProcessComp" nicht ausführen wollte.

Oder?
Bitte warten ..
Mitglied: bastla
02.07.2007 um 15:17 Uhr
Hallo FARYS!

Sehen wir uns zur Sicherheit die %RechnerList% an - füge dazu die Zeile
01.
type "%RechnerList%" & pause
unmittelbar nach der Zeile set "RechnerList=..." ein, wobei das type "%RechnerList%" aus der for-Zeile kopiert sein sollte.

Grüße
bastla
Bitte warten ..
Mitglied: FARYS
02.07.2007 um 15:36 Uhr
Hier die Ausgabe nach der Änderung:
________________________________

Y:\admin\ordner1\ordner2>loggini.bat

Y:\admin\ordner1\ordner2>set "RechnerList=D:\Rechner-List.txt" type "" & pause
Drücken Sie eine beliebige Taste . . .

Y:\admin\ordner1\ordner2>set "ShutDownList=D:\Rechner-PsLoggedOn.txt"

Y:\admin\ordner1\ordner2>if exist "D:\Rechner-PsLoggedOn.txt" del "D:\Rechner-PsLoggedOn.txt"

Y:\admin\ordner1\ordner2>for /F "delims=" %i in ('type "D:\Rechner-List.txt" type ""') do call :ProcessComp "%i"
Das Gerät ist nicht bereit.

Y:\admin\ordner1\ordner2>goto :ShutEmDown

Y:\admin\ordner1\ordner2>if exist "D:\Rechner-PsLoggedOn.txt" for /F "usebackq delims=" %r in ("D:\Rechner-PsLoggedOn.txt") do psshutdown.exe
Y:\admin\ordner1\ordner2>


......hmmm...ich habe type "%RechnerList%" & pause hinzugefügt
......warum wird der Name : "%RechnerList%" in der Kommandozeile nicht angezeigt (also nur "")??
Bitte warten ..
Mitglied: bastla
02.07.2007 um 15:40 Uhr
Hallo FARYS!

01.
type "%RechnerList%" & pause
muss in einer eigenen Zeile stehen - damit wird dann der Inhalt der Rechnerliste zur Kontrolle angezeigt ...

Grüße
bastla
Bitte warten ..
Mitglied: FARYS
18.07.2007 um 15:26 Uhr
Hallo,

bin wieder da.

Also....in meinem Script war ein Pfadfehler, deswegen habe ich immer diese Ausgabe "Das Gerät ist nicht bereit" bekommen. Nach der Korrektur spricht der Script in der "RechnerList" genannten PCs an
....aber ...anstatt sie herunterzufahren (Remoterechner), führt er psshutdown auf dem lokalen (meinem) Rechner! ??????
Sollte ich pstools in einen konkreten Ordner auf den Remoterechnern installieren?? Muss man noch andere Einstellungen (Freigaben..) vornehmen??

Danke für Antworten!

farys
Bitte warten ..
Mitglied: bastla
18.07.2007 um 15:43 Uhr
Hallo FARYS!

Den Rechnernamen musste Du schon mitgeben:
01.
... 
02.
if exist "%RechnerList%" for /F "usebackq delims=" %%r in ("%RechnerList%") do psshutdown.exe <b>\\%%r</b>
Grüße
bastla
Bitte warten ..
Mitglied: FARYS
18.07.2007 um 16:10 Uhr
;);););););)......was man alleine übersehen kann!!!;)

VIELEN DANK! bastla!
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Hyperlink in Menüband einpflegen
Frage von schrodtiMicrosoft Office2 Kommentare

Hallo, unser IT-Helpdesk System ist Browserbasierend. Nun würde ich gerne einen Button mit einem hinterlegten Hyperlink zum Helpdesk in ...

Batch & Shell

Trusted Sites für alle User auf dem PC einpflegen

Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Batch & Shell

Abfrage in einer Batchdatei ?

gelöst Frage von Emily33Batch & Shell3 Kommentare

Hallo alle, ich habe mir eine Diskpart Batchdatei erstellt um öfters USB-Sticks bootfähig zu machen. An einem Punkt komme ...

Batch & Shell

Robocopy in einer Batchdatei

gelöst Frage von CinebatBatch & Shell7 Kommentare

Hallo ich möchte ein einfache Batchdatei erstellen. Ich möchte sämtliche Dateien und Ordner von meiner Festplatte D: auf ein ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 3 TagenHumor (lol)5 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...