11 Replies Latest reply on Jul 21, 2011 3:10 AM by NVUser

    Auslesen eines Reg-Wertes mittels Pre OS Pack

    NVUser Specialist
      Hallo zusammen,

      ich hoffe, einer von Euch hat ähnliche Anforderungen schon mal gehabt und lösen können:
      Also, vor einer Umstellung von XP auf W7 mittels OSD, wollen wir mit Hilfe eines Pre OS Action Pack diverse User-Files vor der Formatierung durch das nächste Pre OS Pack wegsichern.
      Dazu lese ich per reg query-Befehl zur Laufzeit den zuletzt angemeldeten User aus der Registry und lege ihn in einer Variable ab. Diese benutze ich, um im Netzlaufwerk für ihn einen Ordner anzulegen.
      Das Script mittels Batch läuft in der DOS-Box korrekt und es tut alles was es soll.
      Jetzt habe ich aber das Problem, daß, wenn ich das Script ins Action Pack kopiere, es kurz anläuft, dann abbricht und auch das nächste (Format + Partitionierungs-)Pre OS Pack nicht mehr läuft. In der Konsole kommt bei meinem Pack die Meldung: „The extended attributes are inconsistent“.
      Schlußendlich habe ich das Problem auf die eine, aber entscheidende, Zeile eingrenzen können. Klammere ich diese aus, läuft der Rest des Scriptes und auch alle weiteren wie erwartet normal durch. Hier also mal das Stück Nervenkost:

      FOR /f "skip=2 tokens=3" %i IN ('reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUsername') DO SET LastUser=%i


      LastUser wäre also die Variable, die ich weiter verwenden möchte... Ich habe in meiner Verzweiflung auch, wie in Batchscripten üblich, es mal mit einem Doppelprozentzeichen vor den Variable-Werten i probiert und sogar das Hochkomma in den Klammern weggelassen, alles vergebens.
      Nun meine Fragen:
      Sieht von Euch jemand irgendeinen Syntaxfehler? Oder weiß jemand eine andere Variante um den zuletzt angemeldeten User auszulesen?

      Danke für Eure Hilfe schon mal.

      Grüße,
      Torsten
        • 1. Re: Auslesen eines Reg-Wertes mittels Pre OS Pack
          NVUser Specialist
          Hat keiner von Euch einen Ansatz oder einen Tipp?
          • 2. Re: Auslesen eines Reg-Wertes mittels Pre OS Pack
            Frank.Scholer Master
            Hallo Torsten,

            der Fehler „The extended attributes are inconsistent“ deutet normalerweise darauf hin, dass das Script korrupt auf dem Client ankommt.

            Ggfs. kannst du im Debug-Modus mal das Script anschauen (liegt, wenn das Pre OS Paket unter WinPE 2 oder höher läuft) im Verzeichnis X:\Windows (oder X:\Windows\System32 - weiß ich gerade auswendig nicht genau) und heißt Script.bat oder Script.cmd.

            Eventuell probierst du es mal mit mehreren Prozentzeichen (ich würde vier nehmen, weil doppelte Prozentzeichen immer zu einem verkürzt werden - siehe den Post von MEL in [URL="http://forum.enteo.com/showthread.php?t=14019"]diesem Thread)...

            HTH, Grüße Frank
            • 3. Re: Auslesen eines Reg-Wertes mittels Pre OS Pack
              _Mel_ Master
              ein problem ist auf jeden fall, daß mit dem befehl die registry von windows PE ausgelesen wird, in der es diesen wert nicht geben sollte, bzw wo sicher nicht der erwartete wert drinsteht.
              d.h. man muß erstmal die registry des lokalen OS laden und dann auslesen
              reg load ...
              reg query ...
              reg unload ...
              (wird im imaging template für window 7 gemacht um einen wert zu schreiben)
              • 4. Re: Auslesen eines Reg-Wertes mittels Pre OS Pack
                NVUser Specialist
                Hallo Mel, hallo Frank,

                danke für Eure Ansätze!

                Das mit dem Reg Load etc. bin ich gerade am ausprobieren, das Script bricht bis dato zwar weiterhin (beim FOR-Befehl) ab, aber ich teste noch einige Varianten...
                Gibt es in der Pre OS Phase irgendwie die Möglichkeit einer Interaktion mit dem bis dahin gebooteten System zu machen? Z.B. ein DOS-Fenster in dem ich direkt testen kann, ohne nach jedem Fehler erst wieder die neue Version distribuieren, zuweisen... zu müssen?

                @Frank,
                wie komme ich in den DebugMode? Ich habe erst seit einer Woche OSD in Benutzung und bräuchte in der Tat auch irgendwie ein besseres Feedback im Fehlerfall... Das würde ggf. ja auch meine obige Frage beantworten.

                Danke vor ab,

                Torsten
                • 5. Re: Auslesen eines Reg-Wertes mittels Pre OS Pack
                  _Mel_ Master
                  1. trag den rechner auf dem der osdproxy läuft als testcomputer ein(infrastruktur -> org -> properties -> define test computers), dann müssen pilotinstallationen (also nicht freigegebene pakete) von osd paketen nicht mehr zur distribution vorbereitet und verteilt werden, sondern werden direkt von dort verwendet, wo sie auch bearbeitet werden

                  2. beim anlegen/aktualisieren des bootenvironments gibt es ein häckchen für den debugmodus. wenn der aktiv ist, dann bekommt man immer eine kommandozeile - für den richtigen einsatz ist das dann natürlich nicht mehr zu gebrauchen
                  alternativ kann man auch in der osdclnt.ini im bootenvironment PromptOnError=1 setzen. (danach bootenvironment aktualisieren) dann bekommt man im fehlerfall eine kommandozeile und kann überprüfen was schief ging.
                  • 6. Re: Auslesen eines Reg-Wertes mittels Pre OS Pack
                    NVUser Specialist
                    ^^ Toll, das werde ich morgen gleich testen! Dank schön ... und bis später...

                    Update:
                    Also das mit dem DebugFenster läuft schon mal, allerdings finde ich weder auf x: noch c: (wobei das ja wohl die vorherige Installation ist, oder?) die script.cmd/.bat. Wo müßte ich diese finden?

                    @Frank
                    Was meinst Du mit 4 Prozentzeichen? 2 für/vor jede Var und 2 dahinter? Für obigen Befehl allerdings müßte es doch auf %%i lauten, oder? Ich habe jetzt, für alle externen Variablen die Doppelprozent-Variante benutzt... aber die FOR-Zeile hakt immer noch...

                    Update2:
                    Nach einem Neustart lag die Scriptdatei dann doch unter x:\windows\system32\script.cmd
                    • 7. Re: Auslesen eines Reg-Wertes mittels Pre OS Pack
                      NVUser Specialist
                      Mittlerweile bin ich schon einen Schritt weiter. Prinzipiell funktioniert es, denn ich konnte mittels Reg Load und folgender For-Abfrage im Debugmodus manuell die erwarteten Daten abfragen. Allerdings schmiert das Script dann immernoch ab, wenns im Pre OS Pack aufgerufen wird.
                      Kann es sein, daß durch die Hochkommas, Anführungsstriche oder andere Sonderzeichen der Interpreter durcheinander kommt? Gibt es in dieser Phase ein Logfile?

                      Update:
                      Im Debug-Fenster kann ich das Script manuell starten (sieht syntaktisch korrekt aus) und es bricht mit der Fehlermeldung ab: i (also meine Var) was unexpected at this time. Also als ob dieser Syntax nicht korrekt verkraftet wird...
                      • 8. Re: Auslesen eines Reg-Wertes mittels Pre OS Pack
                        _Mel_ Master
                        was steht denn in dem file drin (notepad ist in windows PE enthalten)
                        in batchfiles müssen schleifenvariablen ja mit %% geschrieben werden.
                        da %% beim variablenauflösen auf dem proxy in % umgewandelt werden, muß im script also %%%%i stehen, damit es funktioniert
                        • 9. Re: Auslesen eines Reg-Wertes mittels Pre OS Pack
                          NVUser Specialist
                          Hi Mel,

                          ja mit 4x Prozentzeichen habe ich es nicht probiert, aber mit 3. Die reichen wohl und -> Tata! Es läuft sauber durch!
                          Also, für alle die es interessiert, der Befehl sieht jetzt bei mir so aus:

                          FOR /f "skip=2 tokens=3" %%%I IN ('reg query "HKLM\TempHive\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUsername') DO SET LastUser=%%%I


                          Oder sollten es trotzdem 4x die Prozentzeichen vor dem i sein? Ich werd's probieren...

                          Auf jeden Fall vielen Dank an Euch beide für den Tritt in die richtige Richtung!
                          • 10. Re: Auslesen eines Reg-Wertes mittels Pre OS Pack
                            NVUser Specialist
                            Hallo noch mal,

                            also abschließend möchte ich noch mal kurz zusammenfassen, daß alles läuft.
                            Ob man vor dem i nun 3 oder 4 Prozentzeichen benutzt, scheint für dieses Vorhaben egal zu sein. Ich habe es mit beiden Varianten probiert und im Script steht bei beiden zur Laufzeit (unter x:\...) dann %%i (also 2 Prozentzeichen).
                            Schlußendlich habe ich mich dann aber für die 4er entschieden, weil das Mel und wohl auch Frank (denke mal, so war Dein Post auch gemeint) so empfohlen haben. Hier also noch mal der komplette Teil aus dem Script:

                            ECHO Lade RegHive...
                            REG LOAD HKLM\TempHive c:\Windows\System32\config\software
                            ECHO.
                            FOR /f "skip=2 tokens=3" %%%%I IN ('reg query "HKLM\TempHive\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUsername') DO SET LastUser=%%%%I
                            ECHO Entferne RegHive...
                            REG UNLOAD HKLM\TempHive

                            ECHO.
                            ECHO Zuletzt angemeldeter User: %%LastUser%%


                            Die LastUser-Variable wird dann weiter zum Erstellen und Kopieren der Daten benutzt.

                            Also nochmals danke für die Unterstützung!

                            Torsten
                            • 11. Re: Auslesen eines Reg-Wertes mittels Pre OS Pack
                              bretzeli Expert
                              Ich hatte mit Script und Batch in PRE OS Action Packs nur Probleme. Ich sehe, dass Du dies quasi ja dort machen musst (Vor dem Partitionieren).
                              Seit dem wir diese in regulären Packages nach dem installieren machen klappt es.

                              Vor allem hatten wir effekte, dass es teilweise ging und dann wieder nicht mit Batch in Pre OS Action Sachen. Zu beachten wäre auf jeden Fall noch, dass in PE 3.X teils Script Sachen nicht mehr gehen.

                              Frank weiss hier sicher mehr ;-)