Private/Scripts/TipOfTheDay.ps1
<#
# Tip of the day Beim laden des Modules AKPT wird immer ein Tipp angezeigt. - **Hashtags** TOTD - **Version** 2020.01.29 #> #region Prolog using namespace System.Management.Automation $ErrorActionPreference = [ActionPreference]::Stop Set-StrictMode -Version Latest #endregion class TipOfTheDay { [int]$Id [ValidateSet("Beginner", "Professional", "Expert", "Humor")] [string]$Professionalism [string]$Tip [String]$Resource } $totdDb = @() $totdDb += [TipOfTheDay]@{Id = 1 ; Professionalism = "Beginner" ; Tip="Auf dem laufenden bleiben, z.B. über meinen RSS-Feed." ; Resource="https://www.attilakrick.com/rss/blog/"} $totdDb += [TipOfTheDay]@{Id = 2 ; Professionalism = "Beginner" ; Tip="Auf dem laufenden bleiben. Folgenden Sie mir auf Twitter." ; Resource="https://twitter.com/AttilaKrick"} $totdDb += [TipOfTheDay]@{Id = 3 ; Professionalism = "Beginner" ; Tip="Auf dem laufenden bleiben. Verbinden Sie sich mit mir auf LinkedIn." ; Resource="https://www.linkedin.com/in/attilakrick/"} $totdDb += [TipOfTheDay]@{Id = 4 ; Professionalism = "Professional" ; Tip="Artikel: Für Objekte ein PropertyGrid-Fenster anzeigen lassen." ; Resource="https://www.attilakrick.com/blog-pspropertygrid"} $totdDb += [TipOfTheDay]@{Id = 5 ; Professionalism = "Professional" ; Tip="Artikel: PowerShell-Objekte-Doku einfach aufrufen" ; Resource="https://www.attilakrick.com/blog-psobjektdoku"} $totdDb += [TipOfTheDay]@{Id = 6 ; Professionalism = "Beginner" ; Tip="Artikel: Wie kann ich ein mir unbekanntes Cmdlet finden?" ; Resource="https://www.attilakrick.com/blog-pscmdletfinding"} $totdDb += [TipOfTheDay]@{Id = 7 ; Professionalism = "Beginner" ; Tip="Artikel: PowerShell-Objekte in 3 Schritten erfolgreich analysieren" ; Resource="https://www.attilakrick.com/blog-psobjektanalyse/"} $totdDb += [TipOfTheDay]@{Id = 8 ; Professionalism = "Expert" ; Tip="Artikel: Was Hacker mit der PowerShell erreichen können" ; Resource="https://www.attilakrick.com/blog-pshacking/"} $totdDb += [TipOfTheDay]@{Id = 9 ; Professionalism = "Beginner" ; Tip="Artikel: PowerShell Hintergrundwissen" ; Resource="https://www.attilakrick.com/blog-pshintergrundwissen/"} $totdDb += [TipOfTheDay]@{Id = 10 ; Professionalism = "Professional" ; Tip="Artikel: PowerShell-Objekte für die eigenen Zwecke erweitern und einspannen." ; Resource="https://www.attilakrick.com/blog-pstypeextension/"} $totdDb += [TipOfTheDay]@{Id = 11 ; Professionalism = "Professional" ; Tip="Artikel: Der ideale Aufbau einer PowerShell-Script-Datei (.PS1, .PSM1)" ; Resource="https://www.attilakrick.com/blog-psoptps1file/"} $totdDb += [TipOfTheDay]@{Id = 12 ; Professionalism = "Beginner" ; Tip="Artikel: PowerShell 7 Neuerungen und Gründe für den Umstieg" ; Resource="https://www.attilakrick.com/blog-ps7/"} $totdDb += [TipOfTheDay]@{Id = 13 ; Professionalism = "Professional" ; Tip="Cmdlet: Find-Know => Um in der AKPT-Wissensdatenbank zu suchen." ; Resource="Find-Know -Keyword Pester"} $totdDb += [TipOfTheDay]@{Id = 14 ; Professionalism = "Beginner" ; Tip="Cmdlet: Get-Hotkeys => Zeigt die wichtigsten Tastatur-Befehle rund um PowerShell an." ; Resource="Get-Hotkeys"} $totdDb += [TipOfTheDay]@{Id = 15 ; Professionalism = "Beginner" ; Tip="Die Syntax für ein Cmdlet erhalten." ; Resource="Get-Command -Name Get-Process -Syntax"} $totdDb += [TipOfTheDay]@{Id = 16 ; Professionalism = "Professional" ; Tip="Detaillierte und vollständige Informationen zu Parametern und ParameterSets eines Cmdlets erhalten." ; Resource="Get-Command -Name Get-Process -ShowCommandInfo"} $totdDb += [TipOfTheDay]@{Id = 17 ; Professionalism = "Beginner" ; Tip="Du kannst Visual Studio Code über die 'settings.json' an Deine Bedürfnis anpassen." ; Resource=".\AKPT\Private\Wissen\A2_Visual_Studio_Code.md"} $totdDb += [TipOfTheDay]@{Id = 18 ; Professionalism = "Beginner" ; Tip="Mittels Pipeline '|' kann der Output eines Cmdlets an das nächste Cmdlet übergeben werden." ; Resource='Get-ChildItem "C:\Windows" | Where-Object "Extension" -EQ ".log"'} $totdDb += [TipOfTheDay]@{Id = 19 ; Professionalism = "Beginner" ; Tip="Alle PowerShell Cmdlets in einem Fenster anzeigen, nach Spalte sortiert und individuell filtern." ; Resource="Get-Command -Name *-* -CommandType Cmdlet, Function | Select-Object -Property Name, ModuleName, Verb, Noun | Out-GridView -OutputMode Multiple"} $totdDb += [TipOfTheDay]@{Id = 20 ; Professionalism = "Beginner" ; Tip="<STRG> + <SPACE> öffnet die Autovervollständigung in Visual Studio Code und in der Console für Cmdlets und Parameter" ; Resource="<STRG> + <SPACE>"} $totdDb += [TipOfTheDay]@{Id = 21 ; Professionalism = "Humor" ; Tip="Mann lernt nicht richtig zu fluchen bis mann Auto fahren lernt." ; Resource="Get-Process | Select-Object -Property *"} $totdDb += [TipOfTheDay]@{Id = 22 ; Professionalism = "Humor" ; Tip="Die PowerShell-Standard-Ausgabe zeigt nie das was man wissen will." ; Resource=""} $totdDb += [TipOfTheDay]@{Id = 23 ; Professionalism = "Beginner" ; Tip="'Get-Alias' ist für kryptische Befehle der erste Schritt zur Auslösung." ; Resource="Get-Alias"} $totdDb += [TipOfTheDay]@{Id = 24 ; Professionalism = "Beginner" ; Tip="'Get-Member' ist immer gut für eine aufschlussreiche Analyse von Variablen und Cmdlet-Rückgabeobjekte." ; Resource="Get-Process | Get-Member"} $totdDb += [TipOfTheDay]@{Id = 25 ; Professionalism = "Beginner" ; Tip="Vergegenwärtigen Sie Ihre Ausgangssituation, Ihr Ziel und lösen Sie Probleme auf atomarer Ebene. => 1. Zielführendes Cmdlet finden. 2. Hilfe zu diesem Cmdlet lesen. 3. Rückgabeobjekte mit Get-Member und Select-Object analysieren. 4. Cmdlet testen. 5. Rückschlüsse ziehen und Zwischenschritt-Lösung einbauen. " ; Resource=""} $nowTotd = $totdDb | Get-Random -Count 1 $esc=$([char]27) @" $esc[90m- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -$esc[0m Tipp des Tages - Nummer: $esc[91m$($nowTotd.Id)$esc[0m Professionalität: $esc[93m$($nowTotd.Professionalism)$esc[0m $esc[36m$($nowTotd.Tip)$esc[0m Ressource: $esc[91m$($nowTotd.Resource)$esc[0m $esc[90m- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -$esc[0m "@ | Out-Host |