Ruslan Grumble - Fotolia
Kann die PowerShell zur automatisierten Software-Bereitstellung verwendet werden?
Ohne Automatisierung ist die Software-Bereitstellung ein langwieriger und fehleranfälliger Prozess. Lässt sich hierfür auch die PowerShell verwenden?
Softwareherstellern fällt immer wieder etwas Neues ein. Entsprechend häufig ändern sie ihre Produkte. Ohne eine automatisierte Softwareaktualisierung ist es nahezu unmöglich, mit diesen schnellen Iterationen Schritt zu halten.
Das Deployment von Software in Unternehmensumgebungen ist ohne eine Automatisierung eine undankbare, ja nahezu unmögliche Aufgabe. Kaum hat man Updates für eine bestimmte Software gesucht, verpackt, auf den Desktops verteilt und installiert, stehen auch schon wieder die nächsten Aktualisierungen an und alles beginnt von vorne.
Die Verteilung von Software auf Unternehmensrechnern ist aber wenigstens ein Standardprozess: Die Software muss verpackt werden, die Gruppe der Zielmaschinen muss definiert werden, und anschließend muss die Software an die Maschinen verteilt und installiert werden, ohne dabei den Arbeitsfluss der Anwender zu stören.
Als Werkzeug für die Automatisierung der Softwarebereitstellung bietet sich etwa Microsofts System Center Configuration Manager, Symantecs Endpoint Management oder Dells KACE an. Diese Tools beschleunigen den Vorgang, lassen aber Lücken offen. Solche Lücken lassen sich wiederum hervorragend mit der Windows PowerShell schließen. In kleinen und mittleren Betrieben könnte sich sogar der alleinige Einsatz der PowerShell als die beste Wahl zur Softwarebereitstellung herausstellen. Die PowerShell bietet Skripte für die verschiedensten Schritte des Deployments und bietet die nötige Flexibilität, das Was, Wie und Wann der Softwarebereitstellung abzudecken.
Das Software-Deployment über die PowerShell ist ein vergleichsweise einfacher Vorgang, eignet sich aber eher weniger für die zumeist komplexen Anforderungen größerer Unternehmen. Die Softwarebereitstellung auf tausenden von Unternehmensdesktops birgt ganz andere Probleme. Trotzdem ist durchaus auch die PowerShell ein geeignetes Tool zur Bereitstellung von Software – wenn eben auch eher in kleineren und mittleren Unternehmen.
Software-Deployments per PowerShell automatisieren
Am Anfang steht natürlich die Frage, welche Software verteilt werden soll. Anschließend wird ein kleines Skript erstellt, das die Zielmaschinen definiert. Von hier aus werden alle anderen Aktionen gestartet. Auf GitHub findet sich das Beispiel-Skript, das wir im weiteren Verlauf dieses Artikels verwenden werden.
Soll beispielsweise ein Softwarepaket von Malwarebytes auf zwei Desktops mit den Namen MEMBERSRV1 und LABSQL verteilt werden, so muss lediglich das eben genannte Skript angepasst werden. Hierfür wird es als Deploy-Software.ps1 auf einem lokalen Rechner abgespeichert und wie im Folgenden dargestellt ausgeführt (Abbildung 1 zeigt den daraus resultierenden Ablauf):
& .\Deploy-Software.ps1 -Client 'MEMBERSRV1','LABSQL' -InstallerFilePath C:\Software\mbam-setup-2.2.0.1024.exe –Verbose
Überprüft man nun die angegebenen Desktops, so sollte jetzt auf jedem Malwarebytes vorhanden sein, wie Abbildung 2 zeigt.
Wesentlich effektiver ist es natürlich, den Erfolg der Installation ebenfalls über die PowerShell abzufragen, wie auf Abbildung 3 zu sehen.
Bei der nächsten anstehenden Softwarebereitstellung sollte man also durchaus auch einen Blick auf die PowerShell werfen. Verfügt man bereits über ein teuer eingekauftes Tool zum automatisierten Software-Deployment, dann sollte man es aber natürlich auch nutzen. Sollte es dabei im Bereitstellungsprozess Lücken geben, so kann man diese aber möglicherweise ja über die PowerShell schließen. Wer aber nur ab und an für einige wenige Maschinen Software bereitstellen muss, für den könnte Dank PowerShell ein kommerzielles Produkt tatsächlich überdimensioniert sein.
Weitere Artikel zur PowerShell:
Überblick und Funktionsweise der PowerShell DSC
Dateiserver über die Desired State Configuration bereitstellen
Paketverwaltung per PackageManagement
Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!