Cmd Script ignoriert if Abfrage
Hi,
ich habe ein CMD-Script was beim herunterfahren des Rechners etwas installieren soll. Dies wird per GPO realisiert und auch ausgeführt.
Dieses Script soll jedoch nur einmal ausgeführt werden, da das Setup recht groß ist.
Es handelt sich genauer um zwei Setup Dateien (eine 640, die andere 750MB).
Dazu habe ich am ende des Scripts diesen Eintrag stehen:
Am Anfang habe ich ein
stehen. Diese Zeile wird komplett ignoriert, obwohl meine Prüfdatei vorhanden ist.
Zwischen der ersten und letzten Zeile sind nur Registry-Werte die gesetzt werden und der Silent Aufruf des Setups.
Dieser Teil funktioniert wie er soll
Nur die If-Abfrage leider nicht. Die Frage ist, Warum?
Gruß
ich habe ein CMD-Script was beim herunterfahren des Rechners etwas installieren soll. Dies wird per GPO realisiert und auch ausgeführt.
Dieses Script soll jedoch nur einmal ausgeführt werden, da das Setup recht groß ist.
Es handelt sich genauer um zwei Setup Dateien (eine 640, die andere 750MB).
Dazu habe ich am ende des Scripts diesen Eintrag stehen:
echo Installiert > c:\temp\dmsinfo.txt
Am Anfang habe ich ein
if exist c:\temp\dmsinfo.txt exit
stehen. Diese Zeile wird komplett ignoriert, obwohl meine Prüfdatei vorhanden ist.
Zwischen der ersten und letzten Zeile sind nur Registry-Werte die gesetzt werden und der Silent Aufruf des Setups.
Dieser Teil funktioniert wie er soll
Nur die If-Abfrage leider nicht. Die Frage ist, Warum?
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6359506496
Url: https://administrator.de/contentid/6359506496
Ausgedruckt am: 23.11.2024 um 10:11 Uhr
9 Kommentare
Neuester Kommentar
Möglicherweise liegt ein Syntaxfehler im Skript vor, der dazu führt, dass der "if exist"-Befehl übersprungen wird. Vielleicht ein fehlendes Anführungszeichen oder ein falscher Variablenverweis an einer anderen Stelle des Skripts?
Unzureichenden Berechtigungen für den Zugriff auf das Verzeichnis "c:\temp" sind ausgeschlossen?
Unzureichenden Berechtigungen für den Zugriff auf das Verzeichnis "c:\temp" sind ausgeschlossen?
Also einfach:
if exist C:\ exit
sollte die Zeile sein,
also in deinem Fall:
if exist "c:\temp\dmsinfo.txt" exit
geht so manuell, wenn er das nicht macht.
Dann liegts an der GPO die er wohl doch nicht so macht wie du dir das vorstellst.
Beachte das du die GPO als Herunterfahren Script laufen lässt.
Und nicht als Abmelden Script.
Weil Abmelden läuft im User Kontext und Herunterfahren im Admin Kontext.
Wenn du was installieren willst im Admin Kontext muss es also dort an der richtigen stelle sein.
Und der Admin Kontext läuft als System Account, bedeutet der kann nicht auf Setupdateien im Netzwerk zugreifen,
weil er ja kein Netzwerk Account ist, ausser die Source im Netzwerk ist erreichbar mit rechten: jeder / lesend.
ggf. kann man auch die Gruppe im AD "Domain Computers" verwenden.
if exist C:\ exit
sollte die Zeile sein,
also in deinem Fall:
if exist "c:\temp\dmsinfo.txt" exit
geht so manuell, wenn er das nicht macht.
Dann liegts an der GPO die er wohl doch nicht so macht wie du dir das vorstellst.
Beachte das du die GPO als Herunterfahren Script laufen lässt.
Und nicht als Abmelden Script.
Weil Abmelden läuft im User Kontext und Herunterfahren im Admin Kontext.
Wenn du was installieren willst im Admin Kontext muss es also dort an der richtigen stelle sein.
Und der Admin Kontext läuft als System Account, bedeutet der kann nicht auf Setupdateien im Netzwerk zugreifen,
weil er ja kein Netzwerk Account ist, ausser die Source im Netzwerk ist erreichbar mit rechten: jeder / lesend.
ggf. kann man auch die Gruppe im AD "Domain Computers" verwenden.
Ich tippe auf falsches Character Encoding des Batch Skripts evt. versehentlich mit BOM gespeichert.
Also mal als explizit als ANSI oder UTF-8 (ohne BOM) neu abspeichern.
Denn die Syntax der Zeile an sich ist fehlerfrei. Es gibt also ein Format- oder Zugriffs-Problem deiner Batch.
Cheers Briggs
Also mal als explizit als ANSI oder UTF-8 (ohne BOM) neu abspeichern.
Denn die Syntax der Zeile an sich ist fehlerfrei. Es gibt also ein Format- oder Zugriffs-Problem deiner Batch.
Zitat von @ThePinky777:
Und der Admin Kontext läuft als System Account, bedeutet der kann nicht auf Setupdateien im Netzwerk zugreifen, weil er ja kein Netzwerk Account ist,
Blödsinn natürlich kann SYSTEM auch auf Netzlaufwerke zugreifen wenn die Maschine in den NTFS-ACLs und in der der Freigabe zugelassen wurde!Und der Admin Kontext läuft als System Account, bedeutet der kann nicht auf Setupdateien im Netzwerk zugreifen, weil er ja kein Netzwerk Account ist,
Cheers Briggs