NWC Services Blog
Bei der Paketierung in DSM gibt es ja verschiedene Möglichkeiten, dafür zu sorgen, dass Pakete nur unter bestimmten Bedingungen und Voraussetzungen auf den gemanagten Clients installiert werden. Zu nennen wären hier (ohne Anspruch auf Vollständigkeit):
- unterstützte Plattformen
- serverseitige Voraussetzungen
- clientseitige Voraussetzungen
- Bedingungen für vorhandene Installationen
Die Bedingungen für unterstützte Plattformen sollten klar sein: es werden nur für die Policy-Ziele auch Policy-Instanzen erzeugt, die eine der von dem Paket unterstützten Plattformen verwenden. Ebenso verhält es sich mit serverseitigen Voraussetzungen, auch hier wird eine Policy-Instanz nur dann erzeugt, wenn der Business Logic Server erkennt, dass die angegebenen Voraussetzungen von einem Policy-Ziel erfüllt sind.
Anders verhält es sich jedoch bei clientseitigen Voraussetzungen: für die Policy-Ziele werden auf jeden Fall Policy-Instanzen erzeugt (sofern die Plattform-Einstellungen und serverseitigen Voraussetzungen dem nicht widersprechen). Da DSM aber nicht alle erdenklichen Zustände über die verwalteten Clients in seiner Datenbank speichern kann, werden solche clientseitigen Voraussetzungen erst zur Laufzeit auf den Endgeräten geprüft und dann entschieden, ob die Installation ausgeführt wird oder nicht.
Ein naheliegender Anwendungsfall für die Verwendung von clientseitigen Voraussetzungen ist daher beispielsweise die Prüfung, ob genug freier Speicherplatz für die Installation eines Pakets zur Verfügung steht oder ob die Installation durch die Existenz eines Flags in der Registry oder im Dateisystem erlaubt ist. Bei diesem Vorgehen lauert jedoch "eine böse Falle"...
Seit geraumer Zeit besteht in DSM die Möglichkeit, eine ODS Variable vom Typ "Zeitplan" zu erstellen. Da diese Variable im eScript über die "If"-Anweisung "IsInTimeframe" geprüft werden kann, ergeben sich hieraus gerade für Installationen viele neue Möglichkeiten. Somit wäre es denkbar einen Softwarerollout in mehrere "dynamische Phasen" (führe Aktion 1 aus wenn innerhalb Wartungszeitfenster und Aktion 2 wenn nicht) zu unterteilen, ohne das der DSM Administrator weitere Änderungen am eScript oder der Policy vornehmen muss, wie es oft bei der Verteilung von Patchen oder z.B. auch einer schleichenden Windows 10 Migration gewünscht ist. Ein "Aufschieben" oder "Erweitern" des Zeitplanes greift bei Ausführung des eScripts sofort.
Möchte man nun im eScript den "Beginn" oder das "Ende" des Wartungszeitplans herausfinden, gibt es für den Builtin DSM Wartungszeitplan den eScript Befehl "GetMaintenanceTimes". Leider ist es über diesen Befehl aber zum jetzigen Zeitpunkt nicht möglich einen eigenen Wartungsplan auszulesen um die gewünschten Informationen zu erhalten. Weist man den Wartungsplan einer DSM Variablen zu und lässt sich den Inhalt ausgeben, erscheint die Interpretation dieses codierten Strings auf den ersten Blick relativ schwierig.
Hier ein Custom Wartungszeitplan und der Inhalt der ODS Variablen als String:
1;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgP///z8AAAAA
In diesem Artikel möchte ich zeigen, wie der angezeigte String per PowerShell interpretiert und die darin enthaltene Information in DSM weiterverarbeitet werden kann. Dies würde sich sowohl mit als auch ohne PSX realisieren lassen.
Wie mein Kollege Frank Scholer bereits in seinem letzten Artikel schrieb, kommen mit der nächsten DSM Version (2017) die ja voraussichtlich Ende November erscheinen wird, wieder einige sehr interessante und nützliche Features in das Produkt DSM. Auch ich möchte deshalb in unserer kleinen Rubrik "Sneak Peek" ein weiteres neues Feature etwas genauer vorstellen.
Hierbei handelt es sich um die "Erweiterte Site Definition", mit der es ab sofort möglich ist, mehrere Site-Definitionen innerhalb einer einzigen Site anzugeben und nacheinander abarbeiten zu lassen. Die einzelnen Kriterien einer Site-Definition werden mit der neuen "Def-ID" gekennzeichnet. Dabei können mehrere oder auch nur eine einzige Site-Definition zutreffen und die Sitezugehörigkeit eines Clients bewirken.
Wie dieses Feature in der Praxis umgesetzt werden kann, möchte ich im folgenden Artikel etwas näher ausführen.
Auch in der kommenden Version 2017 wird es wieder etliche sinnvolle Neuerungen geben, die DSM noch flexibler und damit universeller einsetzbar machen. Dabei mausert sich das System mehr und mehr vom reinen Softwareverteilsystem zur zentralen Konsole, mit der typische administrative Aufgabenstellungen des täglichen Geschäfts erledigt werden können.
Eines dieser neuen Features möchte ich in diesem Artikel vorstellen, nämlich die Möglichkeit, benutzerdefinierte Aktionen lokal auf DSM-gemanageten Clients ausführen zu lassen. Der Phantasie sind bei den Anwendungsfällen kaum Grenzen gesetzt, beispielsweise lassen sich damit dezentral die Logfiles einsammeln oder es findet es eine Bereinigung des Festplattenspeichers statt oder ein Client wird bei Verdacht auf Virenbefall nach Schadsoftware gescannt oder oder oder...
Die Umsetzung des Anti-Malware Scans mit Windows Defender möchte ich in diesem Artikel beispielhaft beschreiben.
Arbeitet man viel mit deaktivierten Policys / Policyinstanzen, hat man sich sicherlich schon des Öfteren gewünscht, dass diese ab und zu etwas deutlicher erkennbar wären. Generell werden Policyinstanzen von DSM in hellgrau dargestellt, was je nach Kontrast des Monitors oder mit zunehmender Feierabendmüdigkeit immer schwerer zu erkennen ist.
Da es seit DSM 2016.2 die Möglichkeit gibt deaktivierte Einträge bereits Out-Of-The-Box anzupassen, diese Funktion aber bei vielen Kunden nicht wirklich bekannt ist, möchte ich in diesem Artikel kurz zeigen, wie man die Anzeige hierfür anpassen kann.
Seit DSM-Version 2015.1 ist es ja möglich, das System ohne clientseitige Konten zu betreiben – der Service-Installer kann im Kontext des LocalSystem-Accounts ausgeführt werden und auch der Zugriff auf das Depot für das Staging der Pakete kann in Active Directory Umgebungen mit dem Computerkonto erfolgen. Somit sind in der Konfigurationsdatenbank nur noch die Credentials von Management Point Konten gespeichert, die aber durch die asynchrone Verschlüsselung wirksam geschützt sind.
Trotzdem ist es immer wieder erforderlich, Setup-Programme oder andere Aktionen im Rahmen von DSM-Scripts in einem definierten Benutzerkontext auszuführen, um Zugriff auf Netzwerkressourcen wie Back-End Systeme, Datenbanken, Fileserver oder ähnliches zu haben. Hierfür wird in aller Regel innerhalb der eScripts der Befehl RunAsEx verwendet und dort der Benutzername und das zugehörige Kennwort angegeben.
Dieser Ansatz bringt jedoch unter mehreren Gesichtspunkten Nachteile mit sich...
Vor kurzem wurde ich gefragt, wie man am besten damit umgeht, einen DSM gemanagten Client zu reinstallieren, der jedoch sein Betriebssystem nicht über OSD, sondern über ein anderes System Deployment Tool wie z.B. WDS bekommt.
Problem hierbei ist, dass bei einer "Reinstallation" von Policyinstanzen der Ausführungsmodus "Reinstallation" und nicht wie gewünscht "Installation" gesetzt wird, was natürlich zu unerwünschten Effekten führen kann sofern auch innerhalb der Scripte die unterschiedlichen Ausführungsmodi geprüft und mit verschiedenen Aktionen belegt werden.
Es besteht meiner Erfahrung nach große Unsicherheit, wie man Windows bei Verwendung von Advanced Patch Management (APM) oder PatchLink (PL) konfigurieren soll, damit es nicht auf die Idee kommt, auf den Microsoft Servern selbständig nach Updates zu suchen, diese herunterzuladen und – insbesondere unter Windows 10 – zu einem völlig willkürlichen Zeitpunkt zu installieren.
Die empfohlenen Einstellungen waren auch schon das ein oder andere mal Thema im DSM Forum, beispielsweise in diesem oder diesem Thread.
Während man bei Windows 7 und Windows 8.1 noch einfach über Gruppenrichtlinien den ungewollten Zugriff auf die Microsoft Upate Server unterbinden kann, stellt sich die Sache bei Windows 10 – auch für Clients, die für die Verwendung eines internen WSUS-Servers konfiguriert sind – etwas anders dar...
Oft stellt sich beim Kunden die Frage „Wo werden die Paket Dokumentationen abgelegt“? Idealerweise wird heutzutage der SharePoint-Server zur Dateiablage verwendet, es gibt allerdings noch viele Umgebungen, in denen es noch keine Content Management Systeme gibt.
Somit bietet es sich auch an, die Paketdokumentationen im Paketverzeichnis des DSM Packages abzulegen. In diesem Zusammenhang hat sich der Hersteller schon ganz früh das Verzeichnis Intern$ einfallen lassen. Dieses Verzeichnis dient genau dem Zweck, Dateien mit ins Paketverzeichnis abzulegen, welche – um nicht unnötig kostbaren Plattenplatz zu verschwenden – von der Distribution ausgeschlossen sind.
Wie Sie dieses Verzeichnis sinnvoll und einfach nutzen können, erkläre ich am folgenden Beispiel:
Ich verwende hierfür das Application Template und lege im Paketverzeichnis neben dem Extern$-Unterverzeichnis (zur Ablage der Installationsquellen) zusätzlich das Intern$-Unterverzeichnis an, in dem ein Template für die Paket-Dokumentation abgelegt wird. Das hat den Vorteil, dass bei der Erstellung eines neuen Software Pakets ein einheitliches Dokument verwendet wird.
Immer noch erfreut sich Windows 7 im Business-Bereich großer Beliebtheit. Um das in die Tage gekommene Client-Betriebssystem auf einen aktuellen Stand zu bringen, müssen jedoch zahlreiche Patches nachinstalliert werden, da das letzte offiziell von Microsoft verfügbare Image Windows 7 mit integriertem Service Pack 1 mittlerweile sechs Jahre "auf dem Buckel" hat. Zwar hat Microsoft im letzten Oktober die Patch-Strategie an den Windows 10 Mechanismus angepasst, sodass es seitdem nur noch kumulative monatliche Updates gibt, trotzdem ist die Zahl der nachzuinstallierenden Patch-Pakete auf einer "nackten" Windows 7 SP1 Installation exorbitant.
Wird also ein Original Microsoft-Image für die Grundinstallation von Rechnern verwendet, so führt dies zu extrem langen Installations-Zeiten. Daher sind mittlerweile Maßnahmen, ein benutzerdefiniertes Windows 7 Referenz-Image zu erstellen und für die Betriebssystem-Installation zu verwenden, nicht mehr – wie früher – optional, sondern beinahe "Pflicht geworden".