aivilon
Goto Top

Komplizierte Batchlösung gesucht - Logfile als CSV in verschiedenen Spalten

Kurz zu den Vorhandenen Skripts:
1 Master Skript
x Skripte die vom Masterskript aufgerufen werden

Was möchte ich?:
Ein Log file (als csv) in welchem der Aufbau wie folgt aussieht:
Name des Vorgangs; eventuelle Fehlermeldung; Errorlevel

Hallo Zusammen

Ich denke, nun gibts was zu tüfteln =D

Oben im Vorwort habe ich mein IST-Zustand mal aufgeschrieben.

Ausschnitt aus dem Master Skript:
echo erster Durchlauf          **Dies dient als Info beim Bearbeiten vom Skript**
echo 2 >>ausgabe.txt         **Das ist für den weiteren ablauf, das Batch springt nach dem reboot zum zweiten Durchlauf Abschnitt**

Echo Erster Tailoring Teil >>%installcsv%         **Das sollte in der Zelle A1 stehen**
Echo Startdatum= %Date%, Zeitpunkt= %Time% >>%installcsv%         **Das sollte in der Zelle A2 stehen**
echo ____________________________________________ >>%installcsv%         **Das sollte in der Zelle A3 stehen**
echo. >>%installcsv%         **Das sollte in der Zelle A4 stehen**

:FirstParams         **muss nicht ins log**
call %Step1%         **siehe bitte den zweiten code weiter unten (FirstParams)**

echo ____________________________________________ >>%installcsv%         **Das sollte in der Zelle A9 stehen**
echo. >>%installcsv%         **Das sollte in der Zelle A10 stehen**
Echo Beendet am= %Date%, Zeitpunkt= %Time% >>%installcsv%         **Das sollte in der Zelle A11 stehen**
echo. >>%installcsv%         **Das sollte in der Zelle A12 stehen**
echo. >>%installcsv%         **Das sollte in der Zelle A13 stehen**

:shutdown
shutdown -r -t 5

FirstParams (ganzes Skript):
@echo off

%CMDName%

Echo Erste Parameter werden gesetzt         **Das sollte in der Zelle A5 stehen**

Echo Tailoring in Run Key         **Das sollte in der Zelle A6 stehen**
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\  /v Tailoring /t REG_SZ /d "C:\Temp\FirstLogon.cmd" /f          **Die Ausgabe hiervon sollte in Zelle B6**  
         **Der Errorlevel sollte nun noch in Zelle C6**

Echo IPv6 Deaktivieren         **Das sollte in der Zelle A7 stehen**
reg add HKLM\System\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents /t REG_DWORD /d 4294967295 /f          **Die Ausgabe hiervon sollte in Zelle B7**
         **Der Errorlevel sollte nun noch in Zelle C7**

Echo NetBackup Installations Dateien werden kopiert **Das sollte in der Zelle A8 stehen**         **Die Ausgabe hiervon sollte in Zelle B8**
xcopy C:\temp\Software\NetBackup C:\temp\Skripts\08_NetBackup /Y /I /E
         **Der Errorlevel sollte nun noch in Zelle C8**


**Nun bitte wieder im oberen Skript (Master Skript) weiter lesen**

Das ganze sollte möglichst so aufgebaut sein, dass ich die Zeilen nicht 2 mal schreiben muss, da das ganze Skript ohnehin schon ca 500 Zeilen lang ist und schon schwer genug zu warten.


Wäre toll wenn mir jemand ein wenig helfen könnte und eine Möglichkeit zeigt, um dies zu Realisieren.

Ich hoffe es ist nicht all zu kompliziert und verständlich.


Grüsse
aivilon

Content-ID: 180195

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

Ausgedruckt am: 18.11.2024 um 03:11 Uhr

60730
60730 08.02.2012 um 09:32:57 Uhr
Goto Top
moin,
Zitat von @aivilon:
Ich denke, nun gibts was zu tüfteln =D
Ich hoffe es ist nicht all zu kompliziert und verständlich.

naja....
echo a1,a2,a3,a4,a5>>log.csv

Und gehe ich recht in der Annahme, es handelt sich nicht um XP Systeme, denn da gibts ein simples
netsh interface ipv6 uninstall

Gruß
aivilon
aivilon 08.02.2012 um 09:56:29 Uhr
Goto Top
Zitat von @60730:
moin,
> Zitat von @aivilon:
> ----
> Ich denke, nun gibts was zu tüfteln =D
> Ich hoffe es ist nicht all zu kompliziert und verständlich.

naja....
> echo a1,a2,a3,a4,a5>>log.csv
> 

hmpf?
ich brauch aber in der A1 zum Beispiel "IPv6 Deaktivieren", in der A2 die Ausgabe des Reg adds und in der A3 den Errorlevel.
Da aber die Befehle nicht hintereinander kommen, müsste ich nun also irgendwie dem Batch sagen, wo er die Ausgabe reinschreiben soll.

Deshalb dachte ich, könnte es komplizierter werden. Und oben in den Codes hab ich dies ausführlich deklariert.



Und gehe ich recht in der Annahme, es handelt sich nicht um XP Systeme, denn da gibts ein simples
> netsh interface ipv6 uninstall

Jop, du gehst recht in der Annahme. WS2k8 R2, respektive Windows 7 Kernel. Aber als ich nach einer Möglichkeit suchte, fand ich nur den mit der Registry. Nahja, wie auch immer xP IPv6 geht jetzt auf alle fälle nicht mehr an.


Gruß

Grüsse
60730
60730 08.02.2012 um 10:20:00 Uhr
Goto Top
Salve...

[OT]
man sagt mir nach, dass ich einigermaßen logisch denken können soll.
[/OT]
Aber wenn ich sowas lese, bekomme ich zweifel an der Aussage face-wink
Denn den Sinn dahinter verstehe ich nicht.


11. Echo IPv6 Deaktivieren Das sollte in der Zelle A7 stehen
12. reg add HKLM\System\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents /t REG_DWORD /d 4294967295 /f
Die Ausgabe hiervon sollte in Zelle B7
13. Der Errorlevel sollte nun noch in Zelle C7

A7 geht ja noch...
B7 ist mir zu hoch Der Vorgang wurde erfolgreich ausgeführt. sowas soll ins Log?
und dann auch noch den Errorlevel von Befehl B7 nach C7?also in eine ganz andere Zeile? reicht ein erfolgreich nicht aus?

Was ich da oben gemeint habe - ist nix anderes als sowas banales - eine komplizierte Batchlösung kann ich leider nicht liefern face-wink
Keine AD mit GPO zur Hand?
set "A7" == "IPv6 Deaktivieren"  
for /f "delims=" %%a in ('"reg add HKLM\System\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents /t REG_DWORD /d 4294967295 /f "') do set "B7" == "%%a"  
echo %A7%,%B7%>>log.csv
aivilon
aivilon 08.02.2012 um 10:37:53 Uhr
Goto Top
Zitat von @60730:
Salve...

[OT]
man sagt mir nach, dass ich einigermaßen logisch denken können soll.
[/OT]
Aber wenn ich sowas lese, bekomme ich zweifel an der Aussage face-wink
Denn den Sinn dahinter verstehe ich nicht.


> 11. Echo IPv6 Deaktivieren Das sollte in der Zelle A7 stehen
> 12. reg add HKLM\System\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents /t REG_DWORD /d 4294967295 /f
> Die Ausgabe hiervon sollte in Zelle B7
> 13. Der Errorlevel sollte nun noch in Zelle C7

A7 geht ja noch...
B7 ist mir zu hoch Der Vorgang wurde erfolgreich ausgeführt. sowas soll ins Log?
und dann auch noch den Errorlevel von Befehl B7 nach C7?also in eine ganz andere Zeile? reicht ein
erfolgreich nicht aus?

Es handelt sich im ganzen Skript um ein Tailoring...ein OOBE WS2k8 R2 wird damit noch an diversen Ecken und Kanten angepasst. Und damit die Administration, respektive das Debugging leicher fällt ist es günstig, wenn man sieht, dass etwas nicht korrekt abgelaufen ist und dazu noch den Errorlevel bekommt um damit den Fehler ausfindig zu machen. Klar, wenn alles auber abläuft ist der Errorlevel fiktiv.


Was ich da oben gemeint habe - ist nix anderes als sowas banales - eine komplizierte Batchlösung kann ich
leider nicht liefern face-wink
Keine AD mit GPO zur Hand?

Wäre zu umständlich. Da ein Teil der Maschinen per Paketierung aufgesetzt werden, aber in geraumer Zeit nicht mehr der Fall sein wird. Und wenn ich ezt da GPOs machen würde in einer sehr grossen AD ist das Risiko zu gross, dass was schief läuft.

> set "A7" == "IPv6 Deaktivieren"  
> for /f "delims=" %%a in ('"reg add HKLM\System\CurrentControlSet\Services\Tcpip6\Parameters /v  
> DisabledComponents /t REG_DWORD /d 4294967295 /f "') do set "B7" == "%%a"  
> echo %A7%,%B7%>>log.csv
> 
hmm...logisch...das sollte eigentlich ja für jeden Befehl funktionieren.

Dank'schön

Grüsse
aivilon