Название | PowerShell 7 und Windows PowerShell |
---|---|
Автор произведения | Tobias Weltner |
Жанр | Математика |
Серия | |
Издательство | Математика |
Год выпуска | 0 |
isbn | 9783960104803 |
PS> [Environment]::CommandLine
C:\ps7test\pwsh.dll
In diesem Beispiel sehen Sie, dass PowerShell aus dem Ordner c:\ps7test gestartet wurde. Sie sehen übrigens auch, dass die neue PowerShell eigentlich eine Bibliothek mit der Dateierweiterung *.dll ist. Der Startbefehl pwsh.exe leitet den Aufruf also bloß an diese Bibliothek weiter. Nerds wie ich finden so etwas spannend, aber Sie können dieses Detail auch höflich ignorieren.
Den Pfad zur jeweils gerade genutzten PowerShell finden Sie hiermit heraus:
PS> (Get-Process -Id $pid).Path
C:\ps7test\pwsh.exe
Die Variable $pid enthält bei allen Versionen der PowerShell stets die Prozess-ID der gerade laufenden PowerShell-Instanz-Sitzung.
Kostenlose Softwareverteilungssysteme: Paketmanager
In Linux-Betriebssystemen sind Paketmanager wie apt, yum, dnf, pacman oder brew seit Langem im Einsatz. Sie laden zusätzliche Software automatisch aus dem Internet und installieren sie. Mit diesen Paketmanagern wird übrigens auch PowerShell auf Linux- und macOS-Systemen installiert.
Bei Windows sind solche Paketmanager noch relativ neu, setzen sich aber auch hier inzwischen durch: Am verbreitetsten sind Chocolatey (https://chocolatey.org/install) und Scoop (https://scoop.sh/).
Auch PowerShell ist auf diesen Zug aufgesprungen und enthält einen eigenen plattformunabhängigen Paketmanager namens PowerShellGet (siehe Kapitel 16): Mit ihm kann man kinderleicht PowerShell-spezifische Ressourcen wie neue Cmdlets oder Skripte nachinstallieren, und schon im nächsten Kapitel begegnen Ihnen zahlreiche Beispiele dazu.
Chocolatey und Scoop
Weil Paketmanager für viele Windows-Anwender noch relativ neu sind, sollen die beiden Windows-Paketmanager Chocolatey und Scoop kurz mit einigen Beispielen zeigen, was sie können und wie Paketmanager funktionieren.
Der grundlegende Unterschied zwischen den beiden ist die Art, wie Software installiert wird und welche Rechte dazu nötig sind: Während Chocolatey Installationspakete auf konventionelle Weise stets für alle Anwender installiert und dazu Administratorrechte benötigt, installiert Scoop Anwendungen ohne Administratorrechte und nur für den aktuellen Anwender als portable Apps.
Chocolatey eignet sich daher eher für die Unternehmens-IT, während sich Scoop an Endanwender richtet, die trotz eingeschränkter Rechte schnell und einfach zusätzliche Software installieren möchten.
Voraussetzungen
In beiden Fällen müssen Sie bei älteren Windows-Systemen zuerst den neueren Sicherheitsprotokollstandard TLS 1.2 erlauben, der bei aktuellen Windows-Versionen automatisch unterstützt wird. Andernfalls können Sie über geschützte https:-Verbindungen keine Daten herunterladen:
[System.Net.ServicePointManager]::SecurityProtocol =
[System.Net.ServicePointManager]::SecurityProtocol -bor
[System.Net.SecurityProtocolType]::Tls12
Listing 1.3: Internetsicherheitsprotokoll TLS 1.2 für PowerShell erlauben
Da die Installation über PowerShell-Skripte erfolgt, müssen Sie außerdem mindestens vorübergehend für die aktuelle Sitzung die Ausführung von Skripten erlauben. Sie erfahren in Kapitel 3 mehr darüber. Einstweilen genügt dieser Befehl:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
Listing 1.4: PowerShell-Skripte in der aktuellen PowerShell-Sitzung erlauben
Achtung
Führen Sie die folgenden Befehle unbedingt in einer PowerShell-Konsole aus und nicht in einem Editor wie zum Beispiel dem ISE-Editor.
Die Befehle der hier vorgestellten Softwareverteilungen können im laufenden Betrieb Rückfragen an Sie stellen, zum Beispiel ob ein fehlendes Softwarepaket mitinstalliert werden soll. Solche Rückfragen werden von Editoren wie ISE nicht unterstützt und unterdrückt, sodass das Skript bei Nachfragen in Editoren zu »hängen« scheint.
Chocolatey als Softwareverteilung
Wenn Sie über Administratorrechte verfügen und Software klassisch für alle Anwender des Computers installieren möchten, installieren Sie sich die Paketverwaltung Chocolatey. Dazu benötigen Sie aktivierte Administratorrechte.
Achtung
Chocolatey erfordert grundsätzlich zur Installation volle Administratorrechte und ist schlecht geeignet, wenn Sie Software nur für den aktuellen Anwender installieren möchten. Verwenden Sie für diesen Fall besser Scoop (siehe nächsten Abschnitt).
Listing 1.5 lädt mit Invoke-RestMethod zuerst das Installationsskript von Chocolatey herunter und führt es dann mit Invoke-Expression aus. Das dürfen Sie natürlich nur tun, wenn Sie den Quellen solcher Skripte vertrauen. Geben Sie die URL im Zweifelsfall in die Adressleiste Ihres Browsers ein, um den Code zuerst zu untersuchen oder im Unternehmensumfeld von jemandem freigeben zu lassen.
Invoke-RestMethod -UseBasicParsing -Uri 'https://chocolatey.org/install.ps1' | Invoke-Expression
Listing 1.5: Chocolatey installieren
Alles Weitere übernimmt das Installationsskript und berichtet über alle Schritte, die es ausführt:
Getting latest version of the Chocolatey package for download.
Getting Chocolatey from https://chocolatey.org/api/v2/package/chocolatey/0.10.15.
Downloading 7-Zip commandline tool prior to extraction.
Extracting C:\Users\tobia\AppData\Local\Temp\chocolatey\chocInstall\chocolatey.zip to C:\Users\tobia\AppData\Local\Temp\chocolatey\chocInstall...
Installing chocolatey on this machine
Creating ChocolateyInstall as an environment variable (targeting 'Machine')
Setting ChocolateyInstall to 'C:\ProgramData\chocolatey'
WARNING: It's very likely you will need to close and reopen your shell before you can use choco.
Restricting write permissions to Administrators
We are setting up the Chocolatey package repository.
The packages themselves go to 'C:\ProgramData\chocolatey\lib'
(i.e. C:\ProgramData\chocolatey\lib\yourPackageName).
A shim file for the command line goes to 'C:\ProgramData\chocolatey\bin' and points to an executable
in 'C:\ProgramData\chocolatey\lib\yourPackageName'.
Creating Chocolatey folders if they do not already exist.
WARNING: You can safely ignore errors related to missing log files