Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

For Schleife mit Errorlevel

Frage Microsoft Windows Server

Mitglied: berlinger

berlinger (Level 1) - Jetzt verbinden

09.08.2014, aktualisiert 15:15 Uhr, 1039 Aufrufe, 5 Kommentare

Hallo Zusammen

ich versuche aus einer Text-Datei die IP-Adresse auszulesen und anschliessend via PSEXEC auf dem Zielrechner einen Registry-Key auszulesen.

- Auslesen aus der Text-Datei funktioniert
- Verbinden via PSEXEC funktioniert auch
- Zugriff auf Remote-Registry ist auch OK

for /f "delims=" %%a in (IPs.TXT) do (

"%SYSTEMDRIVE%\Tools\CopyByRoby\BIN\psexec.exe" \\%%a -u xxx -p xxx -h -accepteula reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation" /V "Model"

IF %ERRORLEVEL% EQU 2 ECHO OK >>"%SYSTEMDRIVE%\Tools\CopyByRoby\LOG.txt"
IF %ERRORLEVEL% NEQ 2 ECHO NO >>"%SYSTEMDRIVE%\Tools\CopyByRoby\LOG.txt"
)

Log.txt werden nun alle Rechner als OK eingetragen, daher Errorlevel 2. Da ich aber Rechner dort abfrage die nicht Online sind, dürfte dies doch nicht sein oder?

Meine Idee später ist, ein Log zu haben mit der Übersicht welche OK sind und welche nicht... und mit denen welche nicht OK sind kann man dann noch ein wenig spielen http://www.administrator.de/content/edit.php?id=246056#edit-2-tab

Ja, mit dem ReturnCode 0 habe ich es auch versucht, funktionierte auch nicht. Obwohl PSEXEC nach jedem Rechner sagt "reg exited on XXX.XXX.XXX.XXX with error code 0" - ist wohl vermutlich aber der ErrorCode von REG Query selber..

weiss einer von Euch Rat?

LG
Mitglied: bastla
09.08.2014, aktualisiert um 18:28 Uhr
Hallo berlinger!

Dein Stichwort wäre "delayedExpansion" - allerdings ist es gar nicht nötig, die Variable %ERRORLEVEL% abzufragen:
01.
IF ERRORLEVEL 3 ( 
02.
    ECHO NO >>"%SYSTEMDRIVE%\Tools\CopyByRoby\LOG.txt" 
03.
) ELSE ( 
04.
    ECHO OK >>"%SYSTEMDRIVE%\Tools\CopyByRoby\LOG.txt" 
05.
)
Bei dieser Art der Abfrage wird allerdings auf "größer/gleich" getestet, sodass also 0,1 und 2 "OK" wären ...

Wenn nur zwischen 0 und nicht 0 zu unterscheiden wäre, könntest Du direkt an den Befehl
... && ECHO ERRORLEVEL ist 0 || ECHO ERRORLEVEL ist nicht 0
anfügen.

Grüße
bastla
Bitte warten ..
Mitglied: berlinger
09.08.2014, aktualisiert um 18:16 Uhr
danke Dir

bin schon ein wenig weiter... musste noch 2 Sachen anpassen, Script hat sich davor gleich wieder geschlossen..

habe gerade festgestellt, dass der Errorlevel welcher PSEXEC ausgibt, der in meinem Fall von REG Query ist.

bei mir ist es nun so, dass gewisse Rechner auf die PSEXEC zugreifen will gar nicht online sind oder der Zugriff verweigert wird, daher ist kein REG Query möglich.

in anderen Foren habe ich gelesen, dass hier alles ausser ERRORLEVEL 0 zeigt, dass was nicht OK ist.

Dennoch schreibt es mir im Log bei Allen, es wäre Errorlevel 0 - also OK

setlocal ENABLEDELAYEDEXPANSION

:START

for /f "delims=" %%a in (IPs.TXT) do (

"%SYSTEMDRIVE%\Tools\CopyByRoby\BIN\psexec.exe" \\%%a -u xxx -p xxxx -h -accepteula reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation" /V "Model"
SET SYSTEM=%%a
IF !ERRORLEVEL!==0 (
ECHO !SYSTEM! Updater OK >>"%SYSTEMDRIVE%\Tools\CopyByRoby\LOG.txt"
) ELSE (
ECHO !SYSTEM! Updater NOT OK >>"%SYSTEMDRIVE%\Tools\CopyByRoby\LOG.txt"
)
)
Bitte warten ..
Mitglied: bastla
09.08.2014 um 18:32 Uhr
Hallo berlinger!

Die Errorlevel-Rückgabe von "PsExec" musst Du selbst austesten, auf die Variable !ERRORLEVEL! würde ich aber weiterhin nicht abfragen:
01.
for /f "delims=" %%a in (IPs.TXT) do ( 
02.
    "%SYSTEMDRIVE%\Tools\CopyByRoby\BIN\psexec.exe" \\%%a -u xxx -p xxxx -h -accepteula reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation" /V "Model" && ( 
03.
        ECHO %%a Updater OK >>"%SYSTEMDRIVE%\Tools\CopyByRoby\LOG.txt" 
04.
    ) || ( 
05.
        ECHO %%a Updater NOT OK >>"%SYSTEMDRIVE%\Tools\CopyByRoby\LOG.txt" 
06.
07.
)
Grüße
bastla
Bitte warten ..
Mitglied: berlinger
09.08.2014 um 19:56 Uhr
@bastla
Danke, stimmt den Teil mit dem Errorlevel habe ich verdrängt...

Bin nun unterwegs... daher kann ich es erst später testen

Verstehe ich das richtig, dass du die ausgabe ins log "pipest" ?

Wenn ja wie kann ich das für weitere schritte verwenden? Daher bei ok mach noch das und bei not ok das?

Sorry, aber ich stehe da gerade auf dem schlauch

Warum eigentlich Ohne errorlevel?
Bitte warten ..
Mitglied: bastla
09.08.2014 um 20:48 Uhr
Hallo berlinger!
erstehe ich das richtig, dass du die ausgabe ins log "pipest" ?

Wenn ja wie kann ich das für weitere schritte verwenden? Daher bei ok mach noch das und bei not ok das?
Das kannst Du zusätzlich zum Loggen doch gleich mit erledigen:
01.
for /f "delims=" %%a in (IPs.TXT) do ( 
02.
    "%SYSTEMDRIVE%\Tools\CopyByRoby\BIN\psexec.exe" \\%%a -u xxx -p xxxx -h -accepteula reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation" /V "Model" && ( 
03.
        ECHO %%a Updater OK >>"%SYSTEMDRIVE%\Tools\CopyByRoby\LOG.txt" 
04.
        MachNochDas 
05.
    ) || ( 
06.
        ECHO %%a Updater NOT OK >>"%SYSTEMDRIVE%\Tools\CopyByRoby\LOG.txt" 
07.
        MachWasAnderes 
08.
09.
)
Warum eigentlich Ohne errorlevel?
Ist einfacher und braucht keine "delayedExpansion" - wobei ja ohnehin der Errorlevel geprüft wird (auf 0 oder eben nicht 0) ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Seltsames Verhalten bei Errorlevel abfrage in FOR DO Schleife (1)

Frage von Kalma73 zum Thema Batch & Shell ...

Batch & Shell
Schleife mit todos CMD

Frage von TommyDerWalker zum Thema Batch & Shell ...

Batch & Shell
gelöst Fehler in Schleife (2)

Frage von miczar zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...