Wissen/B02_Aliase.ps1

# ? TITEL Aliase
# ? DESCRIPTION Aliase für Cmdlets verwalten.
# ? TAGS Aliase
# ? VERSION 2019.11.11

[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingCmdletAliases', '')]
param()

# ! Ein Alias ist ein Aufrufkürzel für ein Cmdlet
# ! Es gibt Default-Aliase aber es können auch eigene definiert werden
# ! Aliase müssen für jede Sitzung neu definiert werden

# TODO Weiterführende und Nachschlage-Informationen
Get-Help -Name about_Alias -ShowWindow
Get-Command -Noun Alias
Get-ChildItem -Path Alias:\

#! Aliase erleichten die Arbeit in der Console,
#! sollen aber nicht in Skripten verwendet werden
#! da sonst die Lesbarkeit da runter leidet
#! und die Gefahr besteht das Änderungen am Alias-System
#! das Skript unbrauchbar/fehlerhaft wird!

Get-Process | 
    Where-Object -Property Company -like -Value "Microsoft*" | 
    Sort-Object  -Property Name | 
    Format-Table -Property Name, Company
#! vs.
gps | ? Company -like "Microsoft*" | sort Name | ft Name, Company 

# ? Übersicht aller Aliase
Get-Alias
Get-Command -CommandType Alias

# ? Wie lautet das Cmdlet für den Alias 'ls', 'tnc'
Get-Alias -Name ls
Import-Module -Name NetTCPIP
Get-Alias -Name tnc <# bzw. #> Get-command -Name tnc -CommandType Alias

# ? Welche Aliase gibt es für 'Get-ChildItem', 'Test-NetConnection'
Get-Alias -Definition Get-ChildItem
Get-Alias -Definition Test-NetConnection

# ? Eigene Aliase erstellen (PowerShell sticht DOS)
New-Alias -Name ping -Value Test-NetConnection
ping 127.0.0.1
#! Aliase werden nach Sitzungsende wieder gelöscht
#! Siehe auch Export-Alias; Import-Alias

# ? Welche Cmdlets beschäftigen sich mit Aliase
Get-Command -Noun Alias

# ? Alias werden in einem PSProvider gespeichert/organisiert
Get-ChildItem -Path Alias:\

# ! Für Parameter können auch Aliase definiert sein,
# ! diese werden jedoch nicht in der Hilfe angezeigt.
# ? Welche es sein können erfahren Sie so:
Get-Command -Name Get-ChildItem | 
    Select-Object -ExpandProperty Parameters | 
    Select-Object -ExpandProperty Values | 
    Select-Object -Property Name, Aliases

#region Übungen

<# TODO Übung 1 (Alias)
        ? A) Für welches Cmdlet steht der Alias 'tee'?
        ? B) Erstellen Sie einen Alias 'todo' für das Cmdlet 'Add-Content'.
        ? C) Ein Häcker möchte gerne den Alias dir verändern, so das der entsprechende Ordner gelöscht wird, ist das möglich?
        ? D) Verändern Sie den Alias ise auf notepad.
        ? E) Wie Können Alias vor Veränderungen geschützt werden (gilt auch für Variablen und Funktionen)?
        ? F) Warum sollte man Aliase in Scripten nicht verwenden bzw. wann sollte man diese verwenden?
        ! TIPPS: Set-Alias; New-Alias; Get-Alias
        * MUSTERLÖSUNG:
#>


#endregion