PowerShell 7 und Windows PowerShell. Tobias Weltner

PowerShell 7 und Windows PowerShell - Tobias Weltner


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

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

      Function Compress-Archive 1.2.5 Microsoft.PowerShell.Archive

      Function Expand-Archive 1.2.5 Microsoft.PowerShell.Archive

      Sofort springt Compress-Archive ins Auge: Sie könnten damit nun Dateien in einer ZIP-Datei verpacken. Die folgenden Zeilen legen einen neuen Ordner an und packen dann alle Dateien mit der Dateierweiterung .log, die im Windows-Ordner liegen, in eine neue ZIP-Datei:

      PS> New-Item -Path c:\logfiles -ItemType Directory -ErrorAction Ignore

      PS> Compress-Archive -Path c:\windows\*.log -DestinationPath c:\logfiles\logdateien.zip

       Nach Tätigkeit suchen (»Verb«)

      Möchten Sie lieber erfahren, was Sie sonst noch alles »auspacken« könnten, orientieren Sie sich am Verb des Cmdlets: Expand-Archive packte ZIP-Dateien aus. Die Tätigkeit heißt also Expand. Suchen Sie mit Get-Command nach allen Cmdlets, die dieses Verb verwenden, wenn Sie verwandte Cmdlets finden wollen, die ebenfalls Dinge auspacken:

      PS> Get-Command -Verb Expand

      CommandType Name Version Source

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

      Alias Expand-IscsiVirtualDisk 2.0.0.0 IscsiTarget

      Function Expand-Archive 1.2.5 Microsoft.PowerShell.Archive

      Cmdlet Expand-WindowsCustomDataImage 3.0 Dism

      Cmdlet Expand-WindowsImage 3.0 Dism

      Aufgelistet wird nun möglicherweise unter anderem Expand-WindowsImage, das ein Betriebssystemabbild aus einer Datei (mit der Dateierweiterung *.wim) auspackt. Extrem nützlich, falls Sie das gerade vorhatten, ansonsten einfach ein weiterer Legobaustein unter vielen in Ihrem Automationswerkzeugkasten.

      Grundsätzlich kommen die meisten Cmdlets in Gruppen zu einem bestimmten Thema, und die Verben verraten dann, was die einzelnen Cmdlets der Gruppe tun. Müssen Sie beispielsweise Dienste verwalten (bei Linux Daemons genannt), schauen Sie sich das Noun Service an:

      PS> Get-Command -Noun Service

      CommandType Name Version Source

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

      Cmdlet Get-Service 7.0.0.0 Microsoft.PowerShell.Management

      Cmdlet New-Service 7.0.0.0 Microsoft.PowerShell.Management

      Cmdlet Remove-Service 7.0.0.0 Microsoft.PowerShell.Management

      Cmdlet Restart-Service 7.0.0.0 Microsoft.PowerShell.Management

      Cmdlet Resume-Service 7.0.0.0 Microsoft.PowerShell.Management

      Cmdlet Set-Service 7.0.0.0 Microsoft.PowerShell.Management

      Cmdlet Start-Service 7.0.0.0 Microsoft.PowerShell.Management

      Cmdlet Stop-Service 7.0.0.0 Microsoft.PowerShell.Management

      Cmdlet Suspend-Service 7.0.0.0 Microsoft.PowerShell.Management

      Wollen Sie lieber Prozesse (Programme) verwalten, nehmen Sie stattdessen das Noun Process. Sie werden auch hier eine Gruppe von Cmdlets entdecken, die alle üblichen Aufgaben rund um Prozesse abdecken.

       Hinweis

      In den Ergebnissen von Get-Command fällt die Spalte CommandType auf. Sie gibt an, wie Cmdlets intern programmiert sind: entweder binär kompiliert (Cmdlet) oder mit Bordmitteln aus PowerShell-Code (Function).

      Streng genommen, bezeichnet der Begriff »Cmdlet« also nur einen von zwei Bautypen der PowerShellBefehle. Da sich beide Typen für den Anwender absolut identisch verhalten und ich in diesem Kapitel nicht ständig von »Cmdlets und Funktionen« sprechen möchte, hat der CommandType in der Praxis nur dann eine Bedeutung, wenn hier ausnahmsweise einmal etwas ganz anderes steht: Alias zum Beispiel:

      PS> Get-Command -Verb Expand -Noun *Disk*

      CommandType Name Version Source

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

      Alias Expand-IscsiVirtualDisk 2.0.0.0 IscsiTarget

      Aliase sind Zweitnamen für Befehle. Der Parameter -ShowCommandInfo liefert in diesem Fall in Definition den Namen des eigentlichen »echten« Cmdlets, das der Alias aufrufen würde:

      PS> Get-Command -Name Expand-IscsiVirtualDisk -ShowCommandInfo

      Name : Expand-IscsiVirtualDisk

      ModuleName : IscsiTarget

      Module : @{Name=IscsiTarget}

      CommandType : Alias

      Definition : Resize-IscsiVirtualDisk

      ParameterSets : {}

      Aliasnamen existieren hauptsächlich aus zwei Gründen: historisch (um den »Umstieg« von anderen Shells zu erleichtern) und aus Kompatibilitätsgründen (um bei Namensänderungen weiterhin die ursprünglichen Befehlsnamen zu unterstützen). Get-Alias liefert die Liste der gegenwärtig verfügbaren Aliase.

       Beispiel: Ungefährliche Cmdlets zum Experimentieren finden

      Damit bei ersten Experimenten mit neuen Cmdlets keine Unfälle passieren, suchen Sie zum Spielen am besten Cmdlets mit dem Verb Get. Dieses Verb zeigt an, dass das Cmdlet »Informationen beschafft«.

      So was ist stets ungefährlich, und schlimmstenfalls begegnen Ihnen rote Fehlermeldungen (wenn Sie zum Beispiel nicht über die nötigen Berechtigungen verfügen, um eine bestimmte Information abzufragen). Wirklich beschädigen können Sie mit diesen Befehlen aber nichts:

      PS> Get-Command -Verb Get

      CommandType Name Version Source

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

      Function Get-OperationValidation 1.0.1 Microsoft.PowerShell.Operation.Valida...

      Cmdlet Get-Acl 7.0.0.0 Microsoft.PowerShell.Security

      Cmdlet Get-Alias 7.0.0.0 Microsoft.PowerShell.Utility

      Cmdlet Get-AuthenticodeSignature 7.0.0.0 Microsoft.PowerShell.Security

      Cmdlet Get-ChildItem 7.0.0.0 Microsoft.PowerShell.Management

      (…)

       Beispiel: Netzwerkbefehle finden

      Indem Sie beide Suchkriterien – Verb und Noun – kombinieren, machen Sie Ihre Suche noch spezifischer und finden im Idealfall direkt die passenden Cmdlets für Ihr Anliegen.

      Möchten Sie zum Beispiel Informationen über Ihr Netzwerk erfragen, suchen Sie nach Cmdlets mit dem Verb Get (»Informationen beschaffen«) und einem Tätigkeitsbereich, der das Suchwort net enthält. Das Sternchen (*) ist ein Platzhalter und steht für beliebige andere Zeichen.

      PS> Get-Command -Verb Get -Noun *net*

      CommandType Name Version Source

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

      Function Get-BCNetworkConfiguration 1.0.0.0 BranchCache

      Function Get-DANetworkLocationServer 3.0.0.0 RemoteAccess

      Function Get-DnsServerClientSubnet 2.0.0.0 DnsServer

      Function Get-DnsServerZoneTransferPolicy 2.0.0.0 DnsServer

      Function Get-DtcNetworkSetting 1.0.0.0 MsDtc

      Function


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