Private/Wissen/B_Basic/B5a_Tool.ps1

<#
 
# Tools zur / für PowerShell
 
Tools die das arbeiten mit bzw. in der PowerShell erleichtern.
 
- **Hashtags** Console PowerShell Script Analyzer ScriptAnalyzer BestPractices VS VisualStudio C# ISE Windows Terminal VSCode
 
- **Version** 2020.5.29
 
#>


#region PowerShell Console

# ! Die Console wird über die Jeweilige PowerShell-EXE gestartet:

Start-Process -FilePath 'C:\Program Files\PowerShell\7\pwsh.exe'
Start-Process -FilePath 'C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe'
Start-Process -FilePath 'C:\Windows\syswow64\WindowsPowerShell\v1.0\powershell.exe'

# TIPP Sämtliche Konsolen (PowerShell, Cmd, Bash, etc.) inkl. Remoting können über das Windows Terminal zentral benutzt werden. https://github.com/microsoft/terminal

# ! Mehrzeilig schreiben:

# Sie können Ausdrücke in Klammern "()" setzen oder einfach nach einer Pipeline | einen Zeilenumbruch auslösen.

# ! Tastaturbefehle:

# TAB ...................... Befehlszeilenergänzung
# STRG + C ................. Abbruch
# PFEIL-OBEN/-UNTEN ........ Blättert im Befehls-Cache
# MARKIERUNG + ENTER ....... Kopiert die Markierung in die Zwischenablage
# STRG + C ................. Kopieren (>= 5.0)
# RECHTS-KLICK ............. Fügt dir Zwischenablage ein
# STRG + V ................. Einfügen (>= 5.0)
# STRG + SPACE ............. Vorschlagsliste & Autovervollständigung für Parameter und Argumente

# ! Die letzten Befehle:

Get-History
$MaximumHistoryCount = 50 # Default: 4096

# ! Konsolen-Ein-/Ausgabe protokollieren:

Start-Transcript -Path C:\Temp\PowerShellConsole.log
Get-Process | Stop-Process -Force -WhatIf
Remove-Item c:\ -Recurse -Force -WhatIf
Stop-Transcript
Get-Content -Path C:\Temp\PowerShellConsole.log

# ! max. Anzeige von Enumerationen (-1 ohne Grenze, Default: 4):

Get-Command -Name ForEach-Object | Select-Object -First 1 | Format-List -Property * # Siehe Eigenschaft: Parameters
$FormatEnumerationLimit
$FormatEnumerationLimit = -1
Get-Service -Name RpcSs | Format-List -Property Name, DependentServices

#endregion

#region PowerShell Script Analyzer

# PSScriptAnalyzer ist eine Codeprüfung für PowerShell-Module und -Skripte. PSScriptAnalyzer überprüft die Qualität des Codes durch Ausführen einer Reihe von Regeln. Die Regeln basieren auf Best Practices von PowerShell, die vom PowerShell-Team und der Community ermittelt wurden.

Get-command -Module 'PSScriptAnalyzer'

# ! Code auf Regel-Verstöße prüfen:

Invoke-ScriptAnalyzer -Path '.\AKPT\Public\Get-EuroExchange.ps1'

# TIPP In VSCode wird PSScriptAnalyzer permanent angewendet und die Regelverstöße können in der View Problems ([CTRL]+[SHIFT]+[M]) eingesehen werden.

# ! Welche Regel gibt es:

Get-ScriptAnalyzerRule

# ! Formatiert einen Skripttext basierend auf den Eingabeeinstellungen oder Standardeinstellungen:

$definition = @'
function foo{
"hello"}
'@

Invoke-Formatter -ScriptDefinition $definition

#endregion

#region Visual Studio Code

# READ B5b_Tool_VisualStudioCode.md

#endregion

#region Windows Terminal

# Windows Terminal ist ein Terminalemulator für Windows, der von Microsoft geschrieben wurde. Es enthält Unterstützung für die Eingabeaufforderung, PowerShell, WSL und SSH.

# TODO Bezugsquellen:

# Microsoft Store - Windows Terminal

# GitHub - https://github.com/Microsoft/Terminal

# Windows Terminal ist ein Befehlszeilen-Frontend: Es kann mehrere Terminal-Apps ausführen, einschließlich textbasierter Shells in einem Fenster mit mehreren Registerkarten. Es bietet sofort einsatzbereite Unterstützung für Windows-Eingabeaufforderungen, Windows PowerShell, PowerShell Core, Windows-Subsystem für Linux (WSL) und Azure Cloud Shell Connector.

# ! Features

<#
## Windows Terminal erweitert die textbasierte Befehlserfahrung durch Unterstützung für:
 
- UTF-8 and UTF-16 (including CJK ideograms and emojis)
- Hardware-accelerated text rendering via DirectWrite
- 24-bit color
- Window transparency effects
- Background images
- Themes
- Fullscreen mode
- ANSI/VT sequences
- Split panes
- Microsoft Narrator compatibility via a User Interface Automation (UIA) tree
- Copying text to clipboard in HTML and RTF format
- Mouse input
 
#>


#endregion

#region Visual Studio und PowerShell

# Die große Entwicklungsumgebung Microsoft Visual Studio kann a) zum entwickeln von Cmdlets per C# benutzt werden aber auch durch die entsprechende Erweiterung auch mit .PS1-Dateien und PowerShell-Code umgehen.

# Visual Studio Express - https://visualstudio.microsoft.com/de/vs/express/

# PowerShell Tools for Visual Studio - https://marketplace.visualstudio.com/items?itemName=AdamRDriscoll.PowerShellToolsforVisualStudio2017-18561

# Schreiben eines Cmdlets in C# - https://docs.microsoft.com/de-de/powershell/scripting/developer/cmdlet/how-to-write-a-simple-cmdlet?view=powershell-7

#endregion

#region PowerShell ISE

# Windows PowerShell ISE (Integrated Scripting Environment ist ein GUI Eingabefenster mit unter anderem integriertem Skripteditor, Debugger und IntelliSense Funktionen.

# ! WICHTIG: Die PowerShell ISE befindet sich nicht mehr in der aktiven Featureentwicklung. Als in Windows enthaltene Komponente wird sie weiterhin offiziell mit Sicherheits- und Wartungsfixes hoher Priorität unterstützt. Zurzeit ist es nicht geplant, die ISE aus Windows zu entfernen. Es besteht keine Unterstützung für die ISE in PowerShell v6 oder höher. Benutzer, die einen Ersatz für die ISE suchen, sollten Visual Studio Code mit der PowerShell-Erweiterung verwenden.

#endregion

# TODO QUIZ - https://forms.office.com/Pages/ResponsePage.aspx?id=DQSIkWdsW0yxEjajBLZtrQAAAAAAAAAAAAa__Yp1xwFUN0RDTkZUM1hZR1VIVE5NUUxNOUZUUEg3VC4u