Moin,
ich versuche ein Paket mit Abfrage vom lokalen Admin-Passwort am Anfang zu bauen. Bis zu dem Schritt, bei dem der eingegebene Wert mit dem Wert aus einer vorhandenen Variable verglichen wird, klappt das auch alles gut. Hier der Abschnitt soweit:
Call powershell.exe -ExecutionPolicy Bypass -File ""%SRC%\PasswordInput.ps1"" ""C:\Temp\pw.txt"""
Set V_USEREINGABE=ReadTextFile("C:\Temp\pw.txt")
ReplaceEnv V_USEREINGABE
Del "C:\Temp\pw.txt"
If "%V_USEREINGABE%" == "%V_ADMINPWD%" Then "Set:Product" Else "Set:Error" EndIf
Mein Problem ist, dass die IF Abfrage einfach keinen Effekt hat. Er springt weder nach Set:Product noch nach Set:Error. Ich habe es alternativ auch so versucht:
If "%V_USEREINGABE%" != "%V_ADMINPWD%" Then "Set:Error" EndIf
Beim erstellen der Abfrage habe ich mich an diesem Eintag orientiert: viewtopic.php?t=8890
Vielen Dank fürs Lesen und ggf. Antworten
LG PHartmann
Vergleichen von Variablen mit IF Abfrage
-
renato.weber
- Posts: 7
- Joined: 21. Nov 2014, 15:48
- Contact:
Re: Vergleichen von Variablen mit IF Abfrage
Hallo
Ich verstehe was du machen möchtest, aber ich sehe den Sinn darin noch nicht so ganz.
Hier meine Tipps und Fragen:
1. Wenn jemand das lokale Admin Passwort kennt, ist das Konto des Benutzers vermutlich auch in der lokalen Admin Gruppe. Wenn ja, könnte man das Paket in der Konsole auch in eine Gruppe schieben, das prüft (Reiter Sicherheit) ob der Benutzer auch in dieser Gruppe ist. https://helpfiles.matrix42-web.de/2025_ ... t=Register
2. Wenn du Powershell verwendest würde ich das gesamte Skript in Powershell ausführen und mit Powershell Mitteln gegen die lokale SAM prüfen. so werden keine Passwörter in Dateien geschrieben die dann auch wieder gelöscht werden müssen.
3. Was genau funktioniert in deiner setup.inf?
Kann das Passwort eingegeben werden?
Wird das Passwort in die pw.txt Datei geschrieben?
Kann der String auch wieder aus dem pw.txt gelesen werden?
Ist die Variable V_ADMINPW verschlüsselt in deiner setup.inf abgelegt?
Die eigentliche IF Abfrage scheint für mich zu stimmen. Der Fehler muss also irgendwo vorher liegen.
LG, Renato
Ich verstehe was du machen möchtest, aber ich sehe den Sinn darin noch nicht so ganz.
Hier meine Tipps und Fragen:
1. Wenn jemand das lokale Admin Passwort kennt, ist das Konto des Benutzers vermutlich auch in der lokalen Admin Gruppe. Wenn ja, könnte man das Paket in der Konsole auch in eine Gruppe schieben, das prüft (Reiter Sicherheit) ob der Benutzer auch in dieser Gruppe ist. https://helpfiles.matrix42-web.de/2025_ ... t=Register
2. Wenn du Powershell verwendest würde ich das gesamte Skript in Powershell ausführen und mit Powershell Mitteln gegen die lokale SAM prüfen. so werden keine Passwörter in Dateien geschrieben die dann auch wieder gelöscht werden müssen.
3. Was genau funktioniert in deiner setup.inf?
Kann das Passwort eingegeben werden?
Wird das Passwort in die pw.txt Datei geschrieben?
Kann der String auch wieder aus dem pw.txt gelesen werden?
Ist die Variable V_ADMINPW verschlüsselt in deiner setup.inf abgelegt?
Die eigentliche IF Abfrage scheint für mich zu stimmen. Der Fehler muss also irgendwo vorher liegen.
LG, Renato
Re: Vergleichen von Variablen mit IF Abfrage
Danke für die Antwort. Der Tipp mit dem Register ist tatsächlich sehr hilfreich. Trotzdem würde ich gerne herausfinden, warum meine Variante nicht funktioniert.
Die Idee, das Ganze in PowerShell zu machen, hatte ich auch schon. Das Problem dabei ist jedoch, dass mein ADMINPWD-Referenzwert aus der %COMPUTERNAME%.INI stammt, in der er mit Empirum Encryption gespeichert ist. Daher muss ich den Abgleich der Passwörter in Empirum durchführen.
Eigentlich funktioniert alles bis auf den Vergleich. Ich kann das Passwort eingeben, es wird in der .txt-Datei gespeichert und auch in die Variable geschrieben.
Die Variable V_ADMINPWD wird so in meine Setup.inf übernommen:
[Encryption]
V_ADMINPWD=%V_MACHINEVALUESPATH%\%COMPUTERNAME%.INI,%Computername%\ADMINPWD_SETUP%
[Product]
ReplaceEnv V_ADMINPWD
Danach steht das Passwort als Klartext in der Variable.
Ich hoffe, die Informationen helfen weiter.
Die Idee, das Ganze in PowerShell zu machen, hatte ich auch schon. Das Problem dabei ist jedoch, dass mein ADMINPWD-Referenzwert aus der %COMPUTERNAME%.INI stammt, in der er mit Empirum Encryption gespeichert ist. Daher muss ich den Abgleich der Passwörter in Empirum durchführen.
Eigentlich funktioniert alles bis auf den Vergleich. Ich kann das Passwort eingeben, es wird in der .txt-Datei gespeichert und auch in die Variable geschrieben.
Die Variable V_ADMINPWD wird so in meine Setup.inf übernommen:
[Encryption]
V_ADMINPWD=%V_MACHINEVALUESPATH%\%COMPUTERNAME%.INI,%Computername%\ADMINPWD_SETUP%
[Product]
ReplaceEnv V_ADMINPWD
Danach steht das Passwort als Klartext in der Variable.
Ich hoffe, die Informationen helfen weiter.
-
renato.weber
- Posts: 7
- Joined: 21. Nov 2014, 15:48
- Contact:
Re: Vergleichen von Variablen mit IF Abfrage
Warum wird das Passwort in die Computer.ini geschrieben? Ist das bei jedem Client ein anderes?
Ansonsten könntest du das verschlüsselte Passwort ja direkt als Variable unter Encryption definieren. Aber das weisst du vermutlich...
Fehlt da vor ADMINPWD_SETUP% noch ein % Zeichen?
Kann die Variable denn direkt aus einem File, aus einem String gelesen werden so wie du das machst? Ich habe das noch nie gemacht.
Ansonsten würde ich den Umweg versuchen und den Wert aus der Datei mit ReadFile in eine Hilfsvariable schreiben und dann
[Encryption]
V_ADMINPWD=V_ADMINPWD_SETUP
Ansonsten könntest du das verschlüsselte Passwort ja direkt als Variable unter Encryption definieren. Aber das weisst du vermutlich...
Fehlt da vor ADMINPWD_SETUP% noch ein % Zeichen?
Kann die Variable denn direkt aus einem File, aus einem String gelesen werden so wie du das machst? Ich habe das noch nie gemacht.
Ansonsten würde ich den Umweg versuchen und den Wert aus der Datei mit ReadFile in eine Hilfsvariable schreiben und dann
[Encryption]
V_ADMINPWD=V_ADMINPWD_SETUP
Re: Vergleichen von Variablen mit IF Abfrage
Sicherheitstechnisch ist es fragwürdig, das verschlüsselte Passwort direkt in den Variablen zu definieren, da so jeder, der die Setup.inf lesen kann, theoretisch auch das Passwort im Klartext lesen kann. Dafür werden lediglich der Empirum Package Editor und eine Verbindung zum Empirum-Server benötigt. Dafür sind keine lokalen Adminrechte nötig.
Das mit der Hilfsvariable habe ich auch schon versucht. Kein Erfolg. Ich habe es jetzt auch mal so versucht:
If "%V_USEREINGABE%" == "123" Then "Set:Product" Else "Set:Error" EndIf
Auch kein Erfolg.
Trotzdem ganz vielen Dank für die Ideen
Nee, ist richtig so.Fehlt da vor ADMINPWD_SETUP% noch ein % Zeichen?
Das mit der Hilfsvariable habe ich auch schon versucht. Kein Erfolg. Ich habe es jetzt auch mal so versucht:
If "%V_USEREINGABE%" == "123" Then "Set:Product" Else "Set:Error" EndIf
Auch kein Erfolg.
Trotzdem ganz vielen Dank für die Ideen
Who is online
Users browsing this forum: No registered users and 11 guests