Softwareinstallationen über SCCM und andere Softwareverteilungssysteme können recht einfach per Batch Datei geskriptet werden. Immer wieder passieren dabei aber gravierende Fehler, die man von Beginn an vermeiden sollte. Zur Hilfe möchte ich in diesem Artikel ein paar Punkte nennen, die ich für wichtig halte.
Umgebungsvariablen in Pfaden verwenden
Um späteren Anpassungsaufwand zu vermeiden, sollte man in Pfaden grundsätzlich Umgebungsvariablen verwenden. Und zwar immer dann, wenn es möglich ist. Ein kleines Beispiel:
Aus irgendeinem unerklärlichen Grund wird verlangt, dass das Systemlaufwerk nicht mehr den Laufwerksbuchstaben „C“ hat, sondern „D“. Ich könnte mir vorstellen, dass dann eine ganze Menge Batch Skripts, bei euch angepasst werden müssen. Hätte man nun direkt die Variable „%Systemdrive%“ verwendet, wären viele Arbeitsstunden gespart.
Einen Überblick über die Umgebungsvariablen erhaltet ihr, wenn ihr in der Kommandozeile set
eingebt. Hier auf einem Windows Server 2012 R2 ausgeführt:
Hinweis: Variablen werden eingeklammert von Prozentzeichen verwendet: %VARIABLENNAME%
Als Beispiel habe ich eine kurze Installations-Batch für den VLC Player gewählt. Nach der Installation soll die Desktopverknüpfung für alle Benutzer entfernt werden. Die Desktopverknüpfung befindet sich im Ordner c:\users\public\desktop\. Mit Umgebungsvariablen ausgedrückt: %public%\desktop\. Komplettes Beispiel:
REM ------------------------------------------------------------
REM VLC Install
REM ------------------------------------------------------------
start "" /wait "vlc-2.1.0-win32.exe" /S /NCRC
set errordummy=%ERRORLEVEL%
del "%public%\desktop\VLC media player.lnk"
exit /b %errordummy%
Error Code an SCCM per Batch-Datei zurückgeben
Nach Installationen werden häufig noch Konfigurationsdateien kopiert oder ähnliches. In einer Batch-Datei wird allerdings nur der Fehlercode der letzten Aktion zurückgeliefert. Dadurch kann es passieren, dass eine Installation als erfolgreich angesehen wird, weil das Kopieren einer Konfigurationsdatei erfolgreich war, obwohl die eigentliche Anwendungsinstallation fehlgeschlagen ist.
Ich empfehle daher den Error Code der eigentlichen Anwendungsinstallation zurückzugeben. Eine Batch-Datei sollte daher folgendermaßen aufgebaut sein:
- Voraussetzungen für Installation ausführen
- Installationscode ausführen
- Error Code in Variable schreiben:
set errordummy=%ERRORLEVEL%
- Konfigurationsdateien kopieren usw…
- Error Code zurückgeben:
exit /b %errordummy%
Ausführungspfad der Batch Datei verwenden
Viele von euch kennen das Problem sicherlich. Ihr habt ein Batch Skript geschrieben, wollt es mit einem Doppelklick von einer Netzwerk Freigabe ausführen und erhaltet eine Fehlermeldung in der steht, dass Dateien oder Ordner nicht gefunden wurden. Das liegt daran, dass die Batch Datei im falschen Ordner ausgeführt wird.
Um dieses Problem zu vermeiden, sollte man zu Beginn eines Skripts, zum Ordner der Batch Datei wechseln. Das kann über den Befehl pushd %~dp0
realisiert werden.
Ich werde diesen Beitrag zukünftig erweitern, es lohnt sich also vielleicht hin und wieder vorbeizuschauen.