NWC Services Blog
Grundsätzlich ist die Aussage von FrontRange, dass sowohl die Distribution als auch die Softwareverteilung zum Client über http implementiert ist.
Diese Aussage stimmt zwar grundsätzlich, allerdings gibt es einige Stolpersteine, die einem die Einrichtung eines Depots in diesem Szenario zum persönlichen Jakobs-Weg machen. Daher nun folgend eine kleine Schritt-für-Schritt Anleitung als Abkürzung.
Hinweis: dieser Artikel setzt tiefgehende Kenntnisse über die DSM Infrastruktur, die Distribution, IP und DNS voraus. Sollten Sie unsicher in einem dieser Bereiche sein, nutzen Sie bitte die Unterstützung eines Consultants.
Zielsetzung
Grundsätzliches Ziel dieses Artikels ist der Aufbau eines Depots in einer Außenstelle, das per Pull-Distribution über einen http-Port mit einem zentralen Depot abgeglichen wird. SMB ist dabei zwischen den beiden Lokationen nicht verfügbar.
In diesem Teil der Artikelserie über die PowerShell Scriptingmöglichkeiten in DSM 7 soll es nun um die konkrete Anwendung gehen.
Wie beim Scripting-Support für VBScript, JScript und Perl-Scripts, besteht auch für PowerShell-Scripts die Möglichkeit, lesend auf NetInstall-Variablen zuzugreifen oder die Werte von NetInstall-Variablen zu setzen. Dazu werden über das PowerShell-Modul Enteo.Powershell.ScriptCmdlet.dll, das Teil des DSM 7 Clients ist, folgende Cmdlets zur Verfügung gestellt:
- Get-NIVar
- Set-NIVar
- Write-NIReport
- Set-NIError
- Get-NiInstParam
Eine der wenig bekannten (und noch schlechter dokumentierten) Neuerungen in DSM 7, ist die Unterstützung von PowerShell innerhalb von DSM 7 Scripts.
Da sich PowerShell und die PowerShell-Scriptsprache ja mehr und mehr als die Automatisierungs-Schnittstelle im Windows-Umfeld herauskristallisieren, ist diese Unterstützung ein wichtiger Baustein im Gesamtkonzept einer LifeCycle-Management Strategie.
Dieser Artikel ist der erste einer kleinen Serie von Posts, in der die neuen Möglichkeiten aufgezeigt werden sollen...
Vermutlich jeder NetInstall- / Enteo v6- / DSM 7-Administrator hat sich schonmal die Registry auf den gemanageten Clients unterhalb von Software\NetSupport\NetInstall\Installed Apps angeschaut, weil ja dort die ganzen Infos über die auf dieser Maschine bzw. für einen Benutzer ausgeführten Pakete hinterlegt sind.
Unter anderem gibt's dort auch einen Value LastInstallTime, in dem der Zeitpunkt der letzten Installation des jeweiligen Paketes hinterlegt ist. Allerdings ist dieser Wert vom Typ "Time_t" und wird in einem Byte-Array gespeichert, das die Anzahl der Sekunden seit dem 01.01.1970 angibt und ist damit für den durchschnittlich begabten Systemadministrator (oder Consultant – wie mich) eher nicht lesbar... ;-)
Was verbindet viele große Multinationale Konzerne mit Paketierern an verschiedenen Standorten, mit ebenso vielen Mittelständischen Unternehmen in denen die Paketierleistung durch ein kleines 2-Mann Team gestemmt wird? Es passieren Fehler. Es wird wenig bis gar nichts dokumentiert. Übergaben funktionieren oft nicht. Abteilungsübergreifendes Arbeiten an Paketen erinnert mehr an Krieg als an Zusammenarbeit, Testprozesse (nur der User weiß, wie die Anwendung funktionieren muss) ist eine Farce. Natürlich ist dies nicht die Regel, aber einige der genannten Punkte sind sicherlich in fast jedem Unternehmen wiederzufinden.
Anwender von NetInstall 5 werden das Verhalten kennen: im Rahmen der Freigabe eines Projekts, wurde vor der Komprimierung eine Konsistenzprüfung durchgeführt, die prüfte, ob alle in dem Projekt referenzierten Dateien auch an dem entsprechenden Ort vorhanden waren.
Waren eine oder mehrere Dateien dies nicht – was durchaus sinnvoll und gewollt sein konnte, etwa wenn ein dynamisches Batch-Script erzeugt wurde, das anschließend aufgerufen wurde – so öffnete sich ein Dialog, der auf die fehlenden Dateien hinwies. In diesem Dialog konnte dies dann ignoriert oder die Freigabe des Projekts konnte abgebrochen werden.
In Enteo v6 ging diese Funktionalität verloren, da ja das Vorbereiten der Distribution (das Pendant zur Aktion "Freigeben" in NetInstall 5.x) nun nicht mehr von der Konsole, sondern von einem Distributionsdienst ausgeführt wurde.
Dies war zwar insofern praktisch, als die eMMC nicht während der für das Komprimieren benötigen Zeit blockiert war (wie das in NetInstall 5 der Fall war), allerdings konnte es dadurch auch leichter zu fehlerhaften Paketen kommen, da eventuell für die erfolgreiche Ausführung benötigte Dateien nicht vorhanden waren.
In DSM 7 wurde das Feature nun wieder implementiert – allerdings muss es explizit aktiviert werden und ist standardmäßig nicht aktiv.
Heute mal ein ganz kurzer Eintrag:
Sollte jemand in die Situation geraten, einen NVIDIA Grafikkartentreiber in NetInstall/enteo v6/DSM zu paketieren, wird er feststellen, dass egal wie er das anstellt, das Treiberpaket nicht funktioniert. Hintergrund ist, dass NVIDIA irgendwelche Calls auf Dateien macht, die so nicht direkt in der inf Datei referenziert sind (und somit nicht mit im Treiberpaket landen). Einfache Abhilfe schafft es, den NVIDIA Treiber (z.B. mit 7-Zip) zu entpacken und alle Dateien aus dem Verzeichnis "Display.Drivers" mit in das Paketverzeichnis des Treiber zu kopieren. Weiterhin ist für die saubere Installation weiterer NVIDIA Komponenten (3D, CPLs,...) ein Reboot notwendig.
Nach einem Upgrade von enteo v6 auf DSM 7 können die bestehenden OSD Pakete weiter verwendet werden.
Allerdings empfiehlt es sich das WinPE Bootenvironment zu aktualisieren, um gleich die DSM 7 Client Binaries im WinPE zu haben.
Ansonsten wird erst ein v6 WinPE Client gestartet, der sich dann die aktuellsten Client Binaries aus dem Netz zieht um sich zu aktualisieren.
Das dauert pro Client ein paar Sekunden und kann durch die Option "Update OSD Client" beim WinPE Update umgangen werden.
Seit Windows 7 / Server 2008 R2 gibt's ja die altbekannte Taskleiste eigentlich garnicht mehr – das Teil nennt sich jetzt "Superbar". Eine der Neuerungen ist, dass sie praktisch die alte Taskleiste mit der Schnellstart-Leiste kombiniert, wozu es den Befehl "An Taskleiste anheften" im Kontextmenü von Programmen oder Verknüpfungen gibt.
Dummerweise wird der Befehl aber zum Beispiel garnicht angeboten, wenn man sich auf dem Desktop oder im Startmenü eine Verknüpfung zur Enteo v6 / DSM 7 Konsole erstellt hat und diese jetzt auch der Superbar hinzufügen möchte. Auch Drag-and-Drop auf die Superbar funktioniert nicht, sodass es erstmal nicht möglich erscheint, dort ein Schnellstart-Symbol für die FrontRange Konsole zu erstellen. Nach einigem Suchen im Netz, bin ich schließlich auf die Ursache des Problems und damit dann auch auf die Lösung gekommen...
Vor kurzem habe ich bei einem findigen Kunden gesehen, wie er den Konsolenschalter "/ALS" dafür genutzt hat, den Start der Konsole deutlich zu beschleunigen - dieser (undokumentierte) Schalter steht für "Allow Local Start". Kurzum procmon zur Hand genommen und ein kleines Batchfile geschrieben, das die wichtigsten Daten der Konsole auf die lokale Festplatte kopiert und die eMMC (oder eben DSMC) ausführt.