3 Replies Latest reply on Apr 10, 2013 1:22 AM by derniwi

    slmgr.vbs Returncode

    Miguel.Luna Rookie
      Hallo Zusammen,

      ich aktiviere mit Hilfe des Bortmittel slmgr.vbs meine OEM Win7 Kisten. Nun möchte ich global einen Plausibilitätscheck durchführen. Das bedeutet ich führe über mein DSM 7 folgenden Code aus:

      ExecuteEx('%WINSYSDIR%\cscript.exe //B %WINSYSDIR%\slmgr.vbs /dli','','5')/?/TS


      Je nach Rückgabewert würde ich dann ein folgescript laden oder es Erfolgreich beenden lassen.

      Nun zu meiner Frage:

      Wie kann ich das Ergebnis des Befehls direkt in eine Variable einbinden?
      Bzw. wie verwende ich das Feld "Variablenname für Rückgabewert"

      Bsp. für eine Ausgabe des Befehls:
      Name: Windows(R) 7, Professional edition
      Beschreibung: Windows Operating System - Windows(R) 7, OEM_COA_SLP channel
      Teil-Product Key: XXXXX
      Lizenzstatus: Lizenziert oder Einen Wert X je nach Status


      Danke schon mal im Voraus
        • 1. Re: slmgr.vbs Returncode
          Klaus Salger Expert
          Hallo Miguel,

          slmgr.vbs gibt einen Errorlevel zurück, d.h. wenn Du den per ExecuteEx einer Variablen zuweist (Variablenname für Rückgabewert) und nach dem Aufruf prüfst, ob sie ungleich 0 ist, dann kannst Du das Paket mit Fehler und einer entsprechenden Meldung in der DSMC beenden.

          Wenn Du den Aktivierungsstatus später nochmal prüfen möchtest und das nicht einfach per Errorlevel geht, kannst Du die Textausgabe von slmgr.vbs in eine Datei umleiten und dann im Paket per If LineExist prüfen, ob das Ergebnis OK ist. Wenn die gesuchte Zeile nicht immer genau gleich ist können auch Wildcards (*, ?) verwendet werden, leider aber keine Regular Expressions.

          Wenn Dir das in dem Fall nicht reicht, kann man das mit Hilfe von VBS oder Powershell lösen.

          Ciao
            Klaus
          • 2. Re: slmgr.vbs Returncode
            Markus.Zierer Expert
            Hallo,

            was Du auch machen könntest, wäre es das slmgr.vbs direkt per CallScript Befehl aufzurufen. Da es sich um ein Script handelt, welches den cscript Host benötigt, würde das gehen. Vorteil davon wäre es, dass Du mit den Befehlen NI-SetVar und NI-GetVar direkt Variablen bearbeiten könntest. Die genaue Beschreibung der Befehle findest Du in der Doku. Zugegeben ist etwas versteckt, aber trotzdem.
            • 3. Re: slmgr.vbs Returncode
              derniwi Master
              Hallo,

              @Markus: das würde aber bedeuten, dass Miguel das Original-Skript ändern muss.

              Weiterhin ist zu beachten, dass das Skript slmgr.vbs Texte lokalisiert anzeigt, also Übersetzungen verwendet. Das machte eine Auswertung der Ausgabe auch wieder schwierig, was dann aber für eine Anpassung am Original bzw. einer Kopie sprechen würde.

              Hier würde ich dann abwägen, ob ich die
                  Private Function LoadResourceData
              ändere, so dass immer der englische Text verwendet wird. Also hier die Zeile
                  lang = GetUILanguage()
              auskommentieren und danach ein
                  lang = 1033
              einfügen.

              Da das Skript eh für Administratoren und nicht für "einfache" Benutzer ist, hätte ich damit keine Probleme. ;-)

              Gruß
              Nils