PowerShell 7 und Windows PowerShell. Tobias Weltner

Читать онлайн.
Название PowerShell 7 und Windows PowerShell
Автор произведения Tobias Weltner
Жанр Математика
Серия
Издательство Математика
Год выпуска 0
isbn 9783960104803



Скачать книгу

ausführen.

       Beispielcode sofort ausführen

      Ihr neuer Befehl L beherrscht noch weitere Tricks: Mit dem Parameter -Run wird das angegebene Skript nicht nur heruntergeladen, sondern auch sofort ausgeführt. Das sollten Sie natürlich nur nutzen, wenn Sie sich sicher sind, dass Sie das entsprechende Skript auch wirklich ausführen wollen.

      Listing 1.1 öffnet beispielsweise auf Windows-Systemen den Microsoft Store. Wenn Sie das sofort ausprobieren möchten, fügen Sie den Parameter -Run hinzu:

      PS> L 1.1 -Run

      Listing 1.1:

      Start-Process shell:appsFolder\Microsoft.WindowsStore_8wekyb3d8bbwe!App

      Der Befehl zeigt das Listing in der Konsole an und führt es danach sofort und ohne weitere Rückfragen aus.

      Sicherer ist es, den auszuführenden Code zuerst zu kontrollieren, bevor er ausgeführt wird. Dazu fügen Sie den Parameter -Confirm hinzu. Listing 1.7 zeigte zum Beispiel, wie man alle laufenden Prozesse in einem Auswahldialog anzeigen und dann ausgewählte Prozesse beenden kann.

      Mit -Run -Confirm zeigt Ihnen der Befehl L den auszuführenden Code wieder in der Konsole an, aber führt ihn erst aus, wenn Sie per image zustimmen:

      PS> L 1.7 -Run -Confirm

      Listing 1.7:

      Get-Process |

      Where-Object MainWindowHandle |

      Select-Object -Property Name, Id, Description |

      Sort-Object -Property Name |

      Out-GridView -Title 'Prozesse' -OutputMode Multiple |

      Stop-Process -WhatIf

      Führen Sie nur Code aus, den Sie verstanden haben und von dem Sie genau wissen, was er auslösen wird!

      Drücken Sie "A", um den Code jetzt auszuführen, oder "N", um abzubrechen.

      [J] Ja [A] Ja, alle [N] Nein [K] Nein, keine [H] Anhalten [?] Hilfe (Standard ist "J"): A

      PS>

      Falls Sie also bemerken, dass Sie sich bei der Eingabe der Listing-Nummer vertan haben, können Sie die Ausführung mit image oder image oder auch image + image abbrechen.

       Hinweis

      Alternativ zu -Confirm können Sie auch -WhatIf verwenden: Dann zeigt Ihnen L den Code an, den es ausgeführt hätte, ohne den Code also auszuführen.

      Listing 1.7 verwendet übrigens das Cmdlet Out-GridView, das nur auf Windows-Systemen zur Verfügung steht. In anderen Betriebssystemen können Sie aber, wie bei Listing 1.7 weiter oben angegeben, den Alternativbefehl Out-ConsoleGridView nachrüsten.

       Profilskripte: PowerShell dauerhaft anpassen

      PowerShell vergisst die meisten Anpassungen, sobald Sie es schließen und neu starten. Das ist gut so, denn so wird verhindert, dass eventuell fehlerhafte Einstellungen die PowerShell dauerhaft beschädigen.

      Andererseits möchte man PowerShell natürlich persönlich anpassen können und diese Anpassungen nicht bei jedem Start wiederholen müssen. Ihr neuer praktischer Befehl Get-SampleCode aus dem letzten Abschnitt steht in PowerShell zum Beispiel nur dann zur Verfügung, wenn Sie Listing 1.13 ausgeführt haben. Sie müssten also dieses Listing jedes Mal neu ausführen, wenn Sie eine neue PowerShell starten.

      Die Lösung: Alle persönlichen Anpassungen werden in einem speziellen Skript festgelegt, dem sogenannten Profilskript. PowerShell führt beim Start dieses Skript automatisch aus. So bleiben Ihre Anpassungen wirksam, aber trotzdem kann man PowerShell im Notfall mit dem Parameter -noprofile auch ohne Anpassungen mit den reinen Fabrikeinstellungen starten.

      Wenn Sie Listing 1.13 also in dieses Profilskript einfügen, steht Ihnen der Befehl Get-SampleCode und auch sein Alias l immer zur Verfügung – was die Frage aufwirft: Wo befindet sich dieses magische Autostartskript?

       Einzelne Profilskripte verwenden

      Wenn Sie ausschließlich PowerShell oder ausschließlich Windows PowerShell verwenden, ist das Anlegen des Profilskripts schnell erledigt, denn dessen Pfadname findet sich immer in der Variablen $profile.

      Führen Sie Listing 1.14 aus, um das Profilskript anzulegen, falls es noch fehlt:

      $path = $profile.CurrentUserAllHosts

      $exists = Test-Path -Path $path

      if ($exists -eq $false)

      {

      $null = New-Item -Path $path -ItemType File -Force

      Write-Warning "Profilskript angelegt."

      }

      else

      {

      Write-Warning "Profilskript war vorhanden."

      }

      # Profilskript im assoziierten Editor öffnen:

      Invoke-Item -Path $path

       Listing 1.14: Profilskript anlegen

      Das Profilskript öffnet sich in dem Editor, der aktuell mit der Dateierweiterung .ps1 assoziiert ist. Sie könnten nun Listing 1.15 in dieses Profilskript einfügen und es dann speichern – voilà, fortan würde PowerShell nicht nur den nützlichen neuen Befehl Get-SampleCode automatisch bereitstellen, sondern auch die übrigen sinnvollen Anpassungen der PowerShell einrichten, über die in diesem Kapitel gesprochen wurde:

      [System.Net.ServicePointManager]::SecurityProtocol =

      [System.Net.ServicePointManager]::SecurityProtocol -bor

      [System.Net.SecurityProtocolType]::Tls12

      # Skriptausführung erlauben:

      Set-ExecutionPolicy Bypass -Scope Process -Force

      # Kürzere Prompt-Funktion:

      function prompt {

      'PS> '

      $host.UI.RawUI.WindowTitle