Dreaming Andy - Fotolia
PowerShell 6.0: Windows Server über Linux verwalten
Mit der PowerShell 6 Core können Administratoren von Linux-Servern aus mit der PowerShell arbeiten und so in hybriden Umgebungen einfacher Admin-Aufgaben erledigen.
Um PowerShell Core 6.0 auf Linux-Rechnern zu installieren ist Ubuntu (14.04 und 16.04), Debian 8, CentOS 7, Red Hat Enterprise Linux 7, OpenSUSE 42,1 oder Arch Linux notwendig. Für andere Distributionen bietet Microsoft auf GitHub ein eigenes Paket zur Installation an.
Neben der Verwaltung von Windows-Servern können mit der PowerShell aber auch Linux-Bereiche verwaltet und genutzt werden. So kann zum Beispiel Tail in der PowerShell genutzt werden, etwa so:
Get-Content -Path my.log -Tail 10 –Wait
PowerShell Core installieren
Um die PowerShell 6 Core auf einem Linux-Rechner zu installieren, importieren Sie zuerst die Repositories:
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list
sudo apt-get update
Anschließend wird die PowerShell installiert:
sudo apt-get install -y powershell
Nach der Installation kann die PowerShell im Linux-Terminal über den Befehl pwsh gestartet werden.
Mit dem Befehl Get-Command zeigt die PowerShell Core alle Befehle, welche die Shell zur Verfügung stellt.
Terminal-Befehle sind innerhalb der PowerShell verfügbar
Da die PowerShell über ein Linux-Terminal aufgerufen wird, stehen in der PowerShell-Sitzung natürlich auch alle normalen Linux-Befehle zur Verfügung. Das heißt, Administratoren können parallel mit Linux-Befehlen und Befehlen aus der PowerShell arbeiten.
Mit der PowerShell unter Linux arbeiten
In der PowerShell Core auf Linux-Servern stehen generell die gleichen Möglichkeiten zur Verfügung, wie auf Windows-Servern. Der Unterschied besteht aktuell darin, dass noch nicht alle Cmdlets von Windows portiert wurden. Es ist aber zu erwarten, dass Microsoft hier ständig nacharbeitet.
Eine häufige Administrationsaufgabe ist zum Beispiel die Verwaltung der laufenden Prozesse auf einem Server. Über den Befehl Get-Process lassen sich alle laufenden Prozesse eines Computers anzeigen. Sollen aber zum Beispiel nur alle Prozesse mit dem Anfangsbuchstaben „S“ angezeigt werden, wird der Befehl Get-Process s* eingegeben. Sollen die Prozesse zusätzlich noch sortiert werden, zum Beispiel absteigend nach der CPU-Zeit, wird Get-Process s* gefolgt von der Pipe-Option |Sort-Object cpu -Descending eingegeben.
Die Ergebnisse eines Cmdlets lassen sich mit dem Pipe-Zeichen („|“) an ein anderes Objekt oder an Parameter übergeben, um die Ergebnisse weiter zu verarbeiten. Ein weiteres Beispiel dafür ist Get-Process | Get Member.
Dateien und Objekte kopieren, löschen und verwalten
Mit dem Cmdlet Copy-Item kopiert die PowerShell Dateien oder Ordner. Mit dem Befehl Copy-Item C:\Scripts\test.txt C:\Test wird zum Beispiel die Datei „test.txt“ kopiert.
Der Befehl Copy-Item C:\Scripts\* C:\Test kopiert alle Dateien im entsprechenden Quellordner in den Zielordner. Der Befehl Copy-Item C:\Scripts C:\Test -Recurse legt eine Kopie des Ordners „C:\Scripts“ im Ordner „C:\Test“ an. Ohne die Option „-Recurse“ wird in „C:\Test“ ein Ordner „Scripts“ angelegt, es werden aber keine Dateien und Ordner kopiert. Neben dem vollständigen Befehl kann auch mit den Abkürzungen „cpi“, „cp“ oder „copy“ gearbeitet werden.
Das Cmdlet Move-Item verschiebt Objekte. Mit der Option „-Force“ werden vorhandene Zieldateien oder Ordner überschrieben. Mit dem Cmdlet New-Item erstellen Administratoren neue Dateien oder Ordner. Mit dem Cmdlet Add-Content werden Daten in eine Textdatei geschrieben, zum Beispiel mit: Add-Content C:\Scripts\test.txt "Text". Der Inhalt einer Datei wird mit Set-Content angepasst. Das Cmdlet Clear-Content löscht den Inhalt.
Mit Variablen arbeiten
In der PowerShell Core können Administratoren mit Variablen arbeiten. Bereits vorhandene Variablen lassen sich mit Get-Variable Is* anzeigen. Wollen zum Beispiel Administratoren das aktuelle Datum als Variable „$heute“ hinterlegen, können sie in der Shell den Befehl $heute = Get-Date eingeben.
Anschließend wird das heutige Datum als Variable „$heute“ hinterlegt. Wird in der Shell $heute eingegeben, zeigt die PowerShell das aktuelle Datum an. Die gleiche Vorgehensweise gilt ebenso für alle anderen Werte. Außerdem lässt sich das Ergebnis eines Cmdlets als Variable speichern. So können Anmeldedaten als verschlüsselte Variable hinterlegt werden:
$credentials = Get-Credential
Dadurch lassen sich zum Beispiel Anmeldedaten für die Cloud speichern und nutzen:
$cred = Get-Credential
Add-AzureAccount -Credential $cred
Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!