PowerShell Cmdlets fürs OneGet Framework Software-Pakete im Netzwerk verteilen

Autor / Redakteur: Thomas Joos / Stephan Augsten

Die PowerShell in Windows Server 2016 verfügt über das OneGet-Framework. Dabei handelt es sich um eine Sammlung von Commandlets, die beim Verteilen und Installieren von Anwendungen im Netzwerk hilft. Die Anwendungen werden dabei als Pakete installiert.

Anbieter zum Thema

Mit der PowerShell lassen sich auch Anwendungen im Netzwerk effizient verteilen.
Mit der PowerShell lassen sich auch Anwendungen im Netzwerk effizient verteilen.
(Bild: Thomas Joos / Microsoft)

Die Einstellungen für die Installation sind in den Paketen bereits integriert. Erfreulich dabei ist, dass Anwender mit der PowerShell auf die Pakete von NuGet und Chocolatey Repositories zugreifen können. Damit lassen sich mehrere tausend Anwendungen installieren.

Generell ist die Verwendung der PowerShell ISE besser für OneGet geeignet. Administratoren und Entwickler können die Paketfunktion aber auch problemlos über Skripte in der normalen PowerShell nutzen.

Vor der Installation von Paketen sollte überprüft werden, ob die Ausführungsrichtlinie für Skripte auf „RemoteSigned“ gesetzt ist. Dazu wird der folgende Befehl verwendet:

Set-ExecutionPolicy RemoteSigned

Welche Quellen derzeit angebunden sind, zeigt der Befehl

Get-PackageSource

Die zur Verfügung stehenden Pakete werden folgendermaßen abgerufen:

Find-Package | Out-Gridview

Pakete suchen und installieren

Um bestimmte Pakete zu suchen, die installiert werden können, stehen ebenfalls eigene Commandlets (Cmdlets) zur Verfügung:

Find-Package -Name *<Name>*

Soll ein Paket auch gleich installiert werden, lässt sich auch das gleich in der PowerShell erledigen:

Find-Package | Out-GridView -Title "<Paket das installiert werden soll>" -PassThru | Install-Package -Force

Die Pakete werden standardmäßig ohne Benutzereingaben installiert. Die dazu notwendigen Optionen wurden direkt in das Paket integriert. Administratoren und Entwickler können dieses Verhalten nicht direkt über die PowerShell steuern, sondern über die Installationsdateien des Paketes. Wie solche Pakete erstellt werden zeigt das folgende YouTube-Video:

Wird mit dem *-Platzhalter gearbeitet, zeigt die PowerShell alle Pakete an, die in etwa zum Suchbegriff passen. Neben der Möglichkeit, nach Anwendungen in den Paketen zu suchen, kann auch nach deren Versionen gesucht werden. Dazu steht die Option -MinimumVersion <Version> des Cmdlets Find-Package zur Verfügung. Soll nach älteren Versionen gefiltert werden, wird -MaximumVersion verwendet.

Software auf Nano-Servern mit Windows Server 2016 installieren

Um Quellen für Nano-Server zu finden, werden die folgenden Befehle verwendet:

Install-PackageProvider NanoServerPackage
Import-PackageProvider NanoServerPackage

Pakete für Nano-Server werden folgendermaßen gefunden:

Find-NanoServerPackage
Save-NanoServerPackage
Install-NanoServerPackage

Die wichtigsten Cmdlets, um Pakete auf Nano-Servern zu installieren sind:

Find-Package
Save-Package
Install-Package
Get-Package

Wichtig ist, dass bei den einzelnen Befehlen noch die Option -provider NanoServerPackage genutzt wird. Ohne diese Option werden alle Quellen verwendet. Alle Pakete für Nano-Server lassen sich mit folgenden Befehlen anzeigen, die Abfrage von Paketen in bestimmter Sprache wird mit der Option -Culture veranlasst:

Find-NanoServerPackage
Find-NanoServerPackage -Culture en-us
Find-NanoServerPackage -Culture de-de

Auch hier helfen die Optionen -RequiredVersion, -MinimumVersion, oder -MaximumVersion, um die richtige Version zu finden. Alle Versionen lassen sich mit der Option -AllVersions anzeigen. Ohne die Angabe dieser Filteroptionen zeigen Find-NanoServerPackage und Find-Package jeweils die neueste Version an.

Um die Pakete auf einem Nano-Server oder in einem offline bereitgestellten Nano-Image zu installieren, gibt man einen der folgenden Befehle ein:

Install-NanoServerPackage
Install-Package

Patches und Datensicherungen verwalten

Außerdem hat Microsoft zahlreiche zusätzliche Cmdlets integriert, zum Beispiel Get-Hotfix, Send-MailMessage, Get-ComputerRestorePoint, New-WebServiceProxy, Debug-Process, Add-Computer, Rename-Computer, Reset-ComputerMachinePassword oder Get-Random. Neu ist auch die Möglichkeit, PowerShell-Skripte als Aufgabe im Hintergrund auszuführen.

Dazu hat Microsoft einige neue Cmdlets zur Verwaltung dieser Aufgaben eingebaut. Geben Administratoren in der PowerShell den Befehl

Get-Command *job*

ein, erhalten sie eine Liste der neuen Möglichkeiten angezeigt, um Skripte im Hintergrundlaufen zu lassen.

Container mit der PowerShell-Paketverwaltung steuern

Container bauen auf Images auf. Um sich alle Container-Images anzeigen zu lassen, die auf dem Container-Host zur Verfügung stehen, wird das Cmdlet

Get-ContainerImage

verwendet. Nach der Installation gibt es auf einem Container-Host zunächst kein Image. Das muss erst erzeugt werden.

Get-ContainerHost

zeigt Informationen zum Host an, inklusive des Pfads zu seinen Images. Images laden Administratoren mit folgendem Befehl nach:

Install-PackageProvider ContainerImage -Force

Um Container in Windows Server 2016 zu nutzen, muss zuerst das Container-Feature installiert werden. Dies ist ebenfalls über eine PowerShell-Sitzung möglich:

Install-WindowsFeature containers

Ein Basis-Image für Docker laden Administratoren bei Bedarf direkt bei Microsoft herunter:

Install-PackageProvider ContainerImage -Force
Install-ContainerImage -Name WindowsServerCore
Restart-Service docker

(ID:44969433)