NWC Services Blog
Basic Inventory - Extended Version
Beim Aufbau einer DSM Umgebung gibt es Computer-Eigenschaften, die grundsätzlich immer wieder implementiert werden. Eine Übersicht der folgenden Eigenschaften, die in jeder Umgebung Sinn machen, sollen folgende vorgestellt werden. Es handelt sich hier um Best-Practices die sich im Laufe der Jahre herauskristallisiert haben.
Name | Type | Mgmt/State |
ChassisType | String | State |
Der ChassisTyp wird auf dem Client via eScript und WMI bestimmt. Grundsätzlich ist der ChassisTyp identisch anzusehen wie der (von FRS mitgelieferte) Computertyp. Vorteil des ChassisTyp ist, dass die Bestimmung via WMI deutlich zuverlässiger funktioniert und ggf. auch angepasst werden (z.B. durch Auslesen der Vendor/Produkt Informationen). Folgendes Script kann als Basis für die Befüllung der ChassisType Eigenschaft dienen:
!- Get chassistype definition from WMI
WMIGetIndexData('\\.\root\cimv2','Win32_SystemEnclosure','0','_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','Virtual')
!- 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','Rackedup')
!- Overwrite type for virtual system manufacturer
If %_product%='VirtualBox'
Set('_chassisType','Virtual')
!
ModifyObjectProperty(f_CurrentComputer,'CustomGenCompClientProps','ChassisType','%_chassisType%')
!
Name | Type | Mgmt/State |
PerformanceIndicator | String | State |
Der PerformanceIndicator ist eine Ganzzahl von 1-6, die eine Aussage über die Performance des Clients trifft, wobei die Ermittlung des Wertes via eScript vorgenommen wird. Speziell in Migrationsszenarien ist dieser Wert interessant. Bezogen auf eine Windows XP -> Windows 8.1 Migration könnten die Werte wie folgt genutzt werden:
- High Performance System (CAD, Developer)
- System mit guter Performance und auch für die nächste OS Generation nutzbar
- System durchschnittlicher Performance
- Gerade noch nutzbar
- System kann durch ein Hardware-Upgrade für die Migration tauglich gemacht werden
- System muss ausgetauscht werden
Indikatoren für die Bestimmung des Wertes im eScript können Hersteller/Produkt, die CPU, die RAM Ausstattung, die Festplattengröße, der Grafikkartentyp, oder der zuvor genannte ChassisTyp (Virtuelle Maschinen bekommen z.B. grundsätzlich eine 4) sein. Der geringste Aufwand entsteht, wenn zuerst die Hersteller/Produkt Informationen für pauschal-Bewertungen genutzt werden (ein definiertes "altes Model" vom dem bekannt ist, dass ein Upgrade nicht möglich ist, kann z.B. gleich eine 6 erhalten und das Script wird verlassen).
Name | Type | Mgmt/State |
StagingPhase | String | State |
Die StagingPhase sagt aus, in welcher Phase der Installation sich ein Computer (im Falle einer Erstinstallation) befindet. Dies kann einfach nur eine 1 für "Installation" und 0 für "Operating" sein oder den aktuellen Stand der Installation aufgrund eines Layer oder irgendeines anderen Modells abbilden. Der Vorteil eines Parameters, an dem erkannt werden kann ob sich der Client in der Erstinstallation oder im Betrieb befindet, liegt auf der Hand. Reboots können in der Erstinstallation ohne Frage an den Benutzer durchgeführt werden, Dienste und Prozesse können ohne Rücksicht beliebig gestoppt werden.
Beispiel für die Implementierung
Name | Type | Mgmt/State |
CustomWindowsVersion | String | State |
Die CustomWindowsVersion kann genutzt werden, wenn ein OS schon implementiert werden soll, bevor FRS den Support für das betreffende OS implementiert hat. DSM zum Beispiel erkennt Windows 8.1 im build 7.2.1.2100 als Windows 8.0. Grundsätzlich ist dies auch kein großes Problem. Wird aber auch Windows 8.0 in der Umgebung verwaltet, kann es passieren, dass Pakete auf Windows 8.1 ausrollen, die wirklich nur speziell unter Windows 8.0 funktionieren. Um die Zeit, bis der offizielle Support für die neue OS Version in DSM eingeflossen ist, zu überbrücken kann dieser Wert als Serverseitige Installationsvoraussetzung werden. Die Befüllung des Wertes erfolgt wie folgt:
RegReadValueEx('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion','CurrentVersion','_version',reUseX64Hive)
RegReadValueEx('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion','InstallationType','_instType',reUseX64Hive)
If %_version%='5.0'
Set('_namedVersion','Windows2000')
If %_version%='5.1'
Set('_namedVersion','WindowsXP')
If %_version%='5.2'
Set('_namedVersion','Windows2003')
If %_version%='6.0'
If %_instType%='Client'
Set('_namedVersion','WindowsVista')
If %_instType%='Server'
Set('_namedVersion','Windows2008')
If %_version%='6.1'
If %_instType%='Client'
Set('_namedVersion','Windows7')
If %_instType%='Server'
Set('_namedVersion','Windows2008R2')
If %_version%='6.2'
If %_instType%='Client'
Set('_namedVersion','Windows8')
If %_instType%='Server'
Set('_namedVersion','Windows2012')
If %_version%='6.3'
If %_instType%='Client'
Set('_namedVersion','Windows81')
If %_instType%='Server'
Set('_namedVersion','Windows2012R2')
If %_namedVersion%=''
Set('_namedVersion','unknown')
ModifyObjectProperty(f_CurrentComputer,'CustomGenCompClientProps','WindowsVersion','%_namedVersion%')
Name | Type | Mgmt/State |
Maintenance | Option | Mgmt |
Eine Optionliste deren Werte je 1:1 mit einer dynamischen Gruppe verknüpft sind. Auf den dynamischen Gruppen sind die Wartungspläne für die Clients gesetzt. Oft wird ein Wert für "Full Maintenance" und 2 weitere Werte in die Optionlist aufgenommen.
Name | Type | Mgmt/State |
PrimaryUser | String | Mgmt |
Sind Computer eindeutig einem Benutzer zugeordnet, kann es Sinn machen, diesen direkt in DSM in Form seines Benutzernamen zu notieren. Genutzt werden kann diese Information in Scripten, in Schnittstellen oder um das AD zu befüllen. Folgend eine Snippet um die AD Eigenschaft "employeeID" via DSM Script zu befüllen:
!# Add the primary user to the employeeId Field in Active Directory
If %_primaryUser%='' or %_primaryUser%='---'
goto _exit
Delete('%temp%\setEmployeeId.ldif')/F/TS
ModifyOemEx('%temp%\setEmployeeId.ldif','','','',moInsertAtTop+moOverwriteExisting)
dn: %_adCurrentOU%
changetype: modify
replace: employeeId
employeeId: %_primaryUser%
-
EndProc/TS
RunAsEx('%windir%\ldifde.exe','-i -f "%temp%\setEmployeeId.ldif"','koenig\svc_enteo_DomainJoin','k25F51DB839GF50G866DEA6166CG3BB86A9149','5','_return',WaitForExecution+raNetCredentialsOnly+Failed)/TS
Delete('%temp%\setEmployeeId.ldif')/F/TS
Name | Type | Mgmt/State |
TargetOS | Option | Mgmt |
Eine Optionliste deren Werte je 1:1 mit einer dynamischen Gruppe verknüpft sind. Auf die dynamischen Gruppen sind die Betriebssystempakete zugewiesen. Als Default wird ein Dummy-Wert (z.B. „---„) verwendet, um neu angelegtem Client initial kein Betriebssystem zuzuweisen. Dynamische Gruppen bieten gegenüber statischen Gruppen den Vorteil, dass die Mehrfach-Zuweisung von Betriebssystemen (bei entsprechend gestalteten XOR Filtern) ausgeschlossen ist.
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.
Kommentare