3 Replies Latest reply on Oct 29, 2013 6:17 AM by NicoS1

    ComputerTyp per Script ändern

    Pardua Apprentice
      Hallo zusammen,

      Ich habe bei den Kollegen von nwc-services diesen Blogeintrag für die 6er Umgebung gelesen:

      http://www.nwc-services.de/de/service/blog/viewpost/231

      Ich versuche momentan dieses in unserer 7er Umgebung einzubauen, damit der Computertyp nicht manuell ausgewählt werden muss. (Pakete wie VPN Client sollen daran gebunden werden)

      Die WMI Abfrage funktioniert wunderbar, jedoch bekomme ich es nicht hin den ausgegebenen Wert auch wieder in die Datenbank übertragen zu lassen, sodass im Manager oder Webportal auch angezeigt wird, dass es sich beispielsweise um einen Laptop handelt.

      Das Script sieht bei mir so aus (Auszug)

      If %_WMI_ChassisTypes%='8' or %_WMI_ChassisTypes%='9' or %_WMI_ChassisTypes%='10' or %_WMI_ChassisTypes%='11' or %_WMI_ChassisTypes%='12' or %_WMI_ChassisTypes%='14'
      Set('_chassisType','2')
      Set('_chassisTypename','Laptop')


      Die Werte übergebe ich dann in die Datenbank indem ich SetGlobalvar benutze:

      SetGlobalVar('%CurrentComputer.Computer.ComputerType%','%_chassisTypename%')
      SetGlobalVar('%CurrentComputer.BasicInventory.SystemType%','%_chassisType%')



      Wenn ich das Script auf einem Client ausführe sieht auch alles so weit gut aus.
      Im Log steht dann z.B. auch

      "setGlobalvar('Desktop','Laptop')"

      Er scheint also den falschen Wert "Desktop" mit "Laptop" zu überschreiben.

      Im Manager steht aber danach weiterhin "Desktop" eingetragen.
      Auch ein Testscript, welches mir die Variablen - die ich versuche zu verändern - anzeigt gibt danach wieder "Desktop" aus.

      Ist es eventuell gar nicht möglich diese Werte aus einem Script herraus zu ändern? Oder benutze ich vielleicht den falschen Befehl? SetGlobalvar klang für mich eigentlich ganz richtig...

      Notfalls muss ich mir eine Custom property dafür einbauen, aber schöne fände ich es, wenn die eingebauten Felder dafür verwendet werden könnten..


      Besten Dank
        • 1. Re: ComputerTyp per Script ändern
          Frank.Scholer Master
          Hallo Pardua,

          Ist es eventuell gar nicht möglich diese Werte aus einem Script herraus zu ändern?


          So sieht's leider aus... solche Werte (die du auch manuell in der DSMC ändern kannst) sind vom Typ "Managment Info" und müssen über den Administration Webservice geändert werden. Das heißt, entweder manuell in der Konsole, per SOAP-Programmierung oder per Script und unsere (kommerziellen) PowerShell Extensions...

          HTH, Grüße Frank
          • 2. Re: ComputerTyp per Script ändern
            _Mel_ Master
            er schreibt in dem fall in die Variable mit namen "Desktop" den wert "Laptop"
            was du machen willst ist ein modifyobjectproperty. das unterstützt aber keine änderung am basicinventory. du kannst jetzt zwar die supporteten pfade verlassen und das einfach mit nem texteditor abändern um den "BasicInventory.SystemType"-wert zu ändern (der ist im gegensatz zum computertype clientseitig änderbar), aber das wird dir nichts nützen, der client wird den wert mit dem von ihm ermittelten wert bei jedem installerlauf überschrieben. (sollte er zumindest...)

            edit: ihr könnt auch nen featurerequest aufmachen, daß die laptoperkennung richtig funktionieren soll, wenn die definition über die ncp nicht ausreicht.
            • 3. Re: ComputerTyp per Script ändern
              NicoS1 Master
              Hallo zusammen,

              ich hole mal diesen Thread nach 1,5 Jahren aus der Versenkung raus, da ich gerade auch vor dem "Problem" stand.

              Ich habe aus David Königs Blog seinen Beitrag zur Ergänzgung des Basic Inventorys genommen sein WMI Script leicht abgewandelt, und um ein PowerShell Script von mir ergänzt.

              Herausgekommen ist nun ein DSM Paket, welches auf dem Client ausgeführt wird. Dieses ermittelt den Chassis Typ und setzt anhand dessen den ComputerTyp des Computers.

              !DLL Registrieren (http://forum.enteo.com/showthread.php?t=14178&page=2)
              RunAs('%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe','/ShowCallStack /Logfile="%temp%\Enteo.Powershell.ScriptCmdlet_InstallUtil.log" "C:\Program Files (x86)\NetInst\Enteo.Powershell.ScriptCmdlet.dll"','','','1',Done+raUseSisAccount+WaitForExecution)/TW
              !
              !BLS URL zusammenbauen für den Webservice
              Set('BLSURL','http://%BlsName%:8080/blsAdministration/AdministrationService.asmx?WSDL')
              !
              !Objekt ID des aktuellen Computers hernehmen
              Set('OBJID','%CurrentComputer.Base.Id%')
              !
              !WMI Script von David König, die Bezeichnungen von "_chassisType" angepasst, dass sie den werten in der DSM entsprechen
              !- Get chassistype definition from WMI
              WMIGetIndexData('\\.\root\cimv2','Win32_SystemEnclosure','0','_WMI_')
              ChassisTypes
              EndProc/TW
              !MsgBox
              %_WMI_ChassisTypes%
              EndProc
              !
              !- configure default
              Set('_chassisType','Desktop')
              !
              !- Chassistype "1" is unknown and every machine is used with this state is used as virtualmachine
              If %_WMI_ChassisTypes%='1'
              Set('_chassisType','VirtualMachine')
              !- configure chassistype "8", "9", "10", "11", "12" and "14" as Laptop
              If %_WMI_ChassisTypes%='8' or %_WMI_ChassisTypes%='9' or %_WMI_ChassisTypes%='10' or %_WMI_ChassisTypes%='11' or %_WMI_ChassisTypes%='12' or %_WMI_ChassisTypes%='14'
              Set('_chassisType','Laptop')
              !- configure chassistype "23" as Rackep-Up (Server)
              If %_WMI_ChassisTypes%='23'
              Set('_chassisType','Server')
              !- Overwrite type for virtual system manufacturer
              If %_product%='VirtualBox'
              Set('_chassisType','VirtualMachine')
              !
              !PowerShell Script ausführen, welches den Webservice aufruft und den Wert setzt
              CallScript('.\script\DSM_PowerShell_eScript.ps1')/TS



              Das PowerShell Script auf das ich hier verweise findet ihr in der Zip Datei im Anhang.

              Zu beachten: Das mit der Registrierung der DLL am Anfang im Script hab ich mir hier im Forum geklaut. Referenziert hier auf .Net Framework 4.

              Außerdem bitte prüfen, dass die Webservice URL für euch so passt.
              ggf. dem Runtime User noch Berechtigungen in der DSMC geben das zu ändern.

              Getestet habe ich es erfolgreich unter Windows 7 32 und 64 Bit. Hier hat es mir erfolgreich meine Geräte von Desktop auf Notebook umgestellt. Das Script kann nach belieben erweitert werden um andere Chassis Typen zu erkennen. Erlaubte Werte für _chassisType sind:
              Blade
              Desktop
              Laptop
              PDA
              Server
              VirtualMachine

              Ist aber alles recht expirementell. Nutzung auf eigene Gefahr bitte.