PowerShell 7 und Windows PowerShell. Tobias Weltner

PowerShell 7 und Windows PowerShell - Tobias Weltner


Скачать книгу
öffnet sich ein Dialogfeld ähnlich dem in Abbildung 2.10 mit dessen Eckdaten und Versionen. Auf anderen Betriebssystemen erscheint stattdessen nur eine rote Fehlermeldung und beklagt sich, dass der Befehl winver unbekannt ist. Applications sind fast immer plattformspezifisch, so auch winver:

      PS> winver

      winver: The term 'winver' is not recognized as a name of a cmdlet, function, script file, or

      executable program. Check the spelling of the name, or if a path was included, verify that the

      path is correct and try again.

       Abbildung 2.10: Ein Dialogfeld mit Betriebssystemversion per Befehl öffnen

      Gefunden werden Applications über ihren Namen allerdings nur dann, wenn sie sich in einem Ordner befinden, der in der Systemumgebungsvariablen Path vermerkt ist. Liegt die Application woanders, geben Sie den absoluten (vollständigen) oder relativen Pfadnamen an.

      Der relative Pfad .\anwendung.exe würde beispielsweise die Application anwendung.exe im aktuellen Ordner (.) starten. Der aktuelle Ordner wird normalerweise in der Eingabeaufforderung der PowerShell angezeigt und kann auch über Get-Location erfragt werden.

       Aus der Praxis

      Applications wie winver.exe sind nicht nur betriebssystemspezifisch. Selbst wenn sie vorhanden sind, ist ihr Nutzen für die Automation begrenzt, weil Skripte nun mal keine Informationen in Fenstern lesen können (siehe Abbildung 2.10).

      Wenn es also ein alternatives Cmdlet gibt, das dieselbe Information liefert, ist dieses immer besser geeignet als eine Application.

      Vorhin haben Sie bereits ein Cmdlet kennengelernt, das umfangreiche Betriebssysteminformationen lesen kann (siehe Seite 101): Get-ComputerInfo! Es liefert tatsächlich sogar genau dieselben Informationen wie winver.exe, nur eben in einer Form, in der man die Daten weiterverarbeiten kann:

      PS> Get-ComputerInfo -Property WindowsVersion, OSBuildNumber,WindowsUBR,

      WindowsRegisteredOwner, WindowsRegisteredOrganization

      WindowsVersion : 2004

      OsBuildNumber : 19041

      WindowsUBR : 572

      WindowsRegisteredOwner : [email protected]

      WindowsRegisteredOrganization : psconf.eu

      Und weil auch bei PowerShell viele Wege nach Rom führen, lernen Sie auf Seite 130 einen weiteren Weg kennen, der diese Informationen sogar noch deutlich schneller beschafft als das etwas langsame Get-ComputerInfo.

       Applications finden

      Get-Command kann nicht nur Cmdlets, sondern auch Applications finden. Allerdings sind Suchen nach Applications aufgrund ihrer nicht vorhandenen Namenssystematik viel kniffliger als bei PowerShell-Befehlen.

      Möchten Sie zum Beispiel die Energiespareinstellungen des Computers verwalten, könnten Sie immerhin testweise nach Applications suchen, die das Wort »power« im Namen tragen:

      PS> Get-Command -Name *power* -CommandType Application

      CommandType Name Version Source

      ----------- ---- ------- ------

      Application powercfg.cpl 10.0.19041.1 C:\WINDOWS\system32\powercfg.cpl

      Application powercfg.exe 10.0.19041.1 C:\WINDOWS\system32\powercfg.exe

      Application POWERPNT.EXE 16.0.13426.20332 C:\Program Files (x86)\Microsoft Of...

      Application powershell.exe 10.0.19041.546 C:\WINDOWS\System32\WindowsPowerShe...

      Application powershell_ise.exe 10.0.19041.1 C:\WINDOWS\System32\WindowsPowerShe...

      Das Ergebnis ist unspezifisch. Anders als bei den strukturierten Cmdlet-Namen kann man einem Namen wie powercfg.exe nur sehr vage entnehmen, dass damit die Energiespareinstellungen konfiguriert werden. In den Suchergebnissen finden sich auch die Anwendung PowerPoint (falls sie installiert ist) sowie PowerShell und der ISE-Editor. In der Spalte Source steht jeweils, wo die Anwendung gefunden wurde.

       Aus der Praxis

      Die Suchfunktion können Sie sich ebenfalls zunutze machen, wenn Sie herausfinden müssen, wo sich eine bestimmte Anwendung genau befindet: Stellen Sie den Befehl in runde Klammern und fragen Sie dann mit einem Punkt gezielt die Spalte Source ab.

      Die folgende Anweisung findet heraus, wo die Anwendung powerpnt installiert ist:

      PS> (Get-Command -Name powerpnt).Source

      C:\Program Files (x86)\Microsoft Office\root\Office16\POWERPNT.EXE

      Möchten Sie nur wissen, ob die Anwendung PowerPoint installiert ist, verwenden Sie einen Vergleichsoperator (mehr dazu ab Seite 124) und prüfen, ob mehr als 0 Ergebnisse zurückgeliefert wurden:

      PS> (Get-Command -Name powerpnt -ErrorAction Ignore).Source.Count -gt 0

      True

      Das Prinzip ist wie immer universell und lässt sich künftig bei jedem Befehl einsetzen. Hier würden Sie damit ausschließlich die Spalte IPAddress in den Ergebnissen von Get-NetIpAddress ausgeben, also die Liste der aktuell vergebenen IP-Adressen ermitteln:

      PS> (Get-NetIPAddress).IPAddress

      fe80::4c91:563d:2f8f:47be%10

      fe80::7879:62db:f834:f4a4%8

      fe80::44a6:7f1e:eae5:1ad9%17

      fe80::b50f:484b:6474:add0%12

      ::1

      192.168.2.105

      169.254.71.190

      169.254.244.164

      169.254.26.217

      192.168.1.21

      127.0.0.1

       Profitipp

      Mit dem folgenden Befehl rüsten Sie das Cmdlet Find-PowerShellCommand nach:

      Install-Module -Name PsCommandDiscovery -Scope CurrentUser

       Listing 2.2: Ein neues Cmdlet zur Suche nach unbekannten Befehlen nachrüsten

      Mit diesem neuen Cmdlet kann man noch sehr viel gezielter nach Befehlen suchen als mit Get-Command, und insbesondere die Suche nach Applications wird beim Windows-Betriebssystem dadurch etwas leichter:

      PS> Find-PowerShellCommand -Keyword power -CommandType Application

      Command MatchType Member Type

      ------- --------- ------ ----

      powercfg.cpl Command .cpl: powercfg (x64) [Gui] 10.0.19041.800 Gui

      powercfg.exe Command .exe: powercfg (x64) [Console] 10.0.19041.800 Console

      POWERPNT.EXE Command .exe: POWERPNT (x86) [Gui] 16.0.13628.20274 Gui

      powershell.exe Command .exe: powershell (x64) [Console] 10.0.19041.800


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