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

Frage Entwicklung Batch & Shell

Mitglied: FARYS

FARYS (Level 1) - Jetzt verbinden

26.06.2007, aktualisiert 18.07.2007, 9431 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
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 ...

Outlook & Mail
MySQL Datenbank mit Events in Kalender Server für Outlook einpflegen
Frage von thewugguOutlook & Mail1 Kommentar

Servus, ich möchte gerne aus einer MYSQL Datenbank Veranstaltungen in einen Kalender automatisch einpflegen lassen, den die entsprechenden Personen ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows Server
Windows Store Apps
gelöst Frage von PeterleBWindows Server11 Kommentare

Gibt es einen Weg, auf Windows Server 2016 Windows Store Apps wie zum Beispiel die HP Smart App zu ...

Microsoft Office
Outlook Cache Mode Frage
Frage von GwaihirMicrosoft Office11 Kommentare

Hallo zusammen, bin gerade neu in der Firma und lerne hier einige neue Dinge kennen. Zum Beispiel, dass die ...

Microsoft
Erfahrungen mit Webcam over RDP gesucht
Frage von DerWoWussteMicrosoft10 Kommentare

Moin Kollegen. Bekanntlich kann man Webcams nur mit Drittanbietersoftware in RDP reinschleifen. Was nutzt Ihr dazu? Wie stabil funktioniert ...