DSM-Konsole
FrontRange DSM 7 wird üblicherweise interaktiv über die DSM-Konsole (DSMC) bedient, d.h. Computer, Benutzer, Pakete, Policies usw. werden über die DSMC angezeigt und konfiguriert. Als Ergänzung kann DSM Web eingesetzt werden, insbesondere um sich einen Überblick über laufende Rollouts zu verschaffen.
Ja aber ...
Während die Automatisierung der Installation und Konfiguration von Client Computern das Spezialgebiet von DSM 7 sind, gibt es für die Automatisierung von DSM 7 selbst standardmäßig keine Möglichkeit.
... geht doch
Aber was heißt standardmäßig? Es gibt eine mächtige SOAP-Schnittstelle, die auch von der DSMC für den Zugriff auf DSM 7 verwendet wird. Die Dokumentation dieser Schnittstelle ist allerdings nicht öffentlich verfügbar.
Wenn man DSM 7 selbst teilweise per Script automatisieren möchte, ein eigenes, speziell angepasstes User Interface erstellen will, DSM 7 mit anderen Applikationen verbinden möchte oder dergleichen, dann sehe ich 3 Möglichkeiten:
- Teilnahme an einem speziellen DSM 7-Entwicklerkurs – Teilnehmer erhalten Zugriff auf die Dokumentation der Schnittstelle.
- Einsatz eines 3rd Party-Produkts wie der Powershell Extensions für FrontRange DSM 7 von NWC Services (siehe NWC Services Powershell Extension).
- Selbst forschen.
Was für wen?
1. ist sicher die richtige Lösung wenn es darum geht eigene Produkte zu entwickeln, die auf die DSM 7-Schnittstelle zugreifen. Da sind Entwickler zu Gange, die sich mit dem Thema nicht nur nebenbei beschäftigen. Die nehmen an dem Kurs teil und erhalten Zugriff auf die Dokumentation.
2. ist aus meiner Sicht die passende Lösung für DSM 7-Anwender, die wirklich ernsthaften Bedarf für das Thema DSM 7-Automatisierung haben, dafür aber im Regelfall nicht den Compiler anwerfen wollen sondern wie in DSM 7 für die Paketierung ohnehin üblich – scripten wollen. Die Powershell-Integration ist da technisch ein guter Weg und die Investition in Lizenzen incl. Herstellersupport lohnt sich für ernsthafte Anwender allemal.
3. ist interessant für Leute, die sich (wie ich) zumindest auch spaßeshalber mit dem Thema beschäftigen oder keine Möglichkeit haben Variante 2 zu realisieren.
Insbesondere solange man sich auf lesende Zugriffe beschränkt hält sich auch das Risiko in Grenzen. Ob das Risiko sich hier mit Hilfe der Schnittstellendokumentation womöglich noch reduzieren ließe sei mal dahin gestellt.
Zum Beispiel Variante 3
Ich habe mir 3. näher angeschaut und festgestellt, dass man auch ohne offizielle Doku nicht bei 0 anfangen muss – Kollege NicoS hat sich mit dem Thema schon intensiver auseinander gesetzt und auch einiges Material dazu in seinem Blog gepostet – siehe DSM & PowerShell – Teil 1. Dieses Blog Posting sei allen Interessierten wärmstens empfohlen.
Auf dieser Grundlage habe ich als Beispiel ein Powershell-Script erstellt, das die Ergebnisse beliebiger LDAP Queries gegen DSM7 als Powershell-Objekte liefert. Das Ergebnis kann dann mit üblichen Powershell-Mitteln, insbesondere durch weiterleiten an andere CmdLets weiterverarbeitet werden.
Get-DSMLDAPQuery.ps1 kann unten heruntergeladen werden. Die Dokumentation ist im Quellcode enthalten.
Wenn ich beispielsweise Name, Beschreibung und MAC-Adresse von Computern, deren Name mit „a" beginnt als CSV exportieren möchte, würde folgende Kommandozeile (das Folgende gehört auf eine einzige Zeile) das passende Ergebnis liefern:
Powershell.exe -Command "& {.\Get-DSMLDAPQuery.ps1-DSMServerName "myservername"
-LDAPQuery '(&(Name:IgnoreCase=a*)(objectCategory=Computer))'
-LDAPattributes 'Name,Description,BasicInventory.InitialMACAddress'
-OutputDirectAttributes ('Name','Description')
| convertto-csv -NoTypeInformation}
>"d:\DSMOutput\Computerlist.csv"
Aus dem recht allgemein gehaltenen Script kann man natürlich auch leicht eine spezialisierte Version machen, die ohne Parameter für alles und jedes einfach z.B. einige Attribute aller Computerobjekte in einer bestimmten Sortierung in eine definierte Datei schreibt.
Wenn ich das nur einmalig brauche, dann bekomme ich das in diesem Fall auch einfach aus der DSMC – eine per LDAP-Filter zusammengeklickte Liste kann ich ja jederzeit als CSV exportieren.
Die Scriptlösung ist allerdings flexibler – wie wäre es mit der Ausgabe in ein HTML per convertto-html? – und lässt sich leicht auch von anderen Applikationen aus oder automatisch per Task Scheduler ausführen.
Soviel dazu für heute. Für Fragen, Kritik, Verbesserungsvorschläge usw. bin ich wie immer offen.
Kommentar schreiben