Um einzelne Computer für die Ausführung eines bestimmten Scripts ein- bzw. auszuschließen, verwende ich seit Langem in fast allen produktiven Scripts einen – von mir so benannten – „Clientfilter„. In einem alten Beitrag hatte ich die zugrunde liegende Technik bereits erklärt, möchte das jetzt nochmal ein wenig ausführlicher, in 2 verschiedenen Ausführungen, zeigen.
Das Prinzip müsste klar sein: eine Textdatei enthält einen oder mehrere Computernamen, 1 pro Zeile. Der Clientfilter vergleicht den Computernamen des ausführenden Computers mit jeder Zeile der Textdatei und reagiert entsprechend.
Zwei typische Anwendungen baue ich immer in die Scripte mit ein:
Fall 1: nur bestimmte Computer dürfen ausführen
In einem Unternehmen mit XXX Computern möchte ich ein neues Script vorerst testen. Dazu soll dieses Script erst einmal nur von 1 oder 2 Computern gestartet werden können. Ich konfiguriere also folgenden Clientfilter:
set wd=\\server\working\dir REM Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto nextstep goto end :nextstep ... :end ...
Das Script prüft also an dieser Stelle, ob der ausführende Computer(name) in der allowedPCs.txt Datei im %wd% Verzeichnis vorhanden ist. Wenn ja, geht es zur Sprungmarke
nextstep
, wenn nicht, zu
end
. Somit erlaube ich das Script nur für einzelne aus einer Gruppe von vielen Rechnern.
Fall 2: nur bestimmte Computer dürfen nicht ausführen
Nun habe ich das Script also getestet und möchte es auf XXX Computer installieren. Dabei möchte ich aber einzelne Rechner ausschließen. Hierfür ist folgender Clientfilter gedacht:
set wd=\\server\working\dir REM Clientfilter: die Computer aus der deniedPCs.txt dürfen nicht installieren for /f %%f in (%wd%\deniedPCs.txt) do if "%computername%"=="%%f" goto end goto nextstep :nextstep ... :end ...
Das Script wird also von allen Computern ausgeführt, deren Name nicht in der deniedPCs.txt steht. Ist die deniedPCs.txt leer, so wird das Script von allen Computern ausgeführt.
Beides baue ich in meine Scripte ein und kommentiere den gerade nicht benötigten Bereich aus.
Somit ist es für meine Verteilungen also normal, wenn neben dem Script auch immer diese beiden Textdateien allowedPCs.txt und deniedPCs.txt im Verzeichnis enthalten sind. In der allowedPCs.txt stehen meisten die Testrechner, die deniedPCs.txt ist meistens leer.