Private/Scripts/TipOfTheDay.ps1

<#
 
# Tip of the day
 
Beim laden des Modules AKPT wird immer ein Zufalls-Tipp angezeigt.
 
- **Hashtags** TOTD
- **Version** 2020.12.06
 
#>


class TipOfTheDay {
    [int]$Id
    [ValidateSet("Beginner", "Professional", "Expert", "Humor")]
    [string]$Professionalism
    [string]$Tip
    [String]$Resource
}

$totdDb = @()
$totdDb += [TipOfTheDay]@{Id = 101 ; Professionalism = "Beginner"     ; Tip="Auf dem laufenden bleiben, z.B. über meinen RSS-Feed."                              ; Resource="https://attilakrick.com/feed/"}
$totdDb += [TipOfTheDay]@{Id = 102 ; Professionalism = "Beginner"     ; Tip="Auf dem laufenden bleiben. Folgenden Sie mir (Attila Krick) auf Twitter."           ; Resource="https://twitter.com/AttilaKrick"}
$totdDb += [TipOfTheDay]@{Id = 103 ; Professionalism = "Beginner"     ; Tip="Auf dem laufenden bleiben. Verbinden Sie sich mit mir (Attila Krick) auf LinkedIn." ; Resource="https://www.linkedin.com/in/attilakrick/"}
$totdDb += [TipOfTheDay]@{Id = 104 ; Professionalism = "Beginner"     ; Tip="Testen Sie Ihr PowerShell-Wissen in einem Quiz"                                     ; Resource="https://attilakrick.com/powershell/powershell-wissenstest/"}
$totdDb += [TipOfTheDay]@{Id = 500 ; Professionalism = "Professional" ; Tip="Artikel: PowerShell-Objekte für die eigenen Zwecke erweitern und einspannen."       ; Resource="https://attilakrick.com/powershell/powershell-objekt-erweiterung/"}
$totdDb += [TipOfTheDay]@{Id = 501 ; Professionalism = "Beginner"     ; Tip="Artikel: Wie kann ich ein mir unbekanntes Cmdlet finden?" ; Resource="https://attilakrick.com/powershell/cmdlet-finden/"}
$totdDb += [TipOfTheDay]@{Id = 502 ; Professionalism = "Professional" ; Tip="Artikel: Der ideale Aufbau einer PowerShell-Script-Datei (.PS1, .PSM1)" ; Resource="https://attilakrick.com/powershell/powershell-script-aufbau/"}
$totdDb += [TipOfTheDay]@{Id = 503 ; Professionalism = "Beginner"     ; Tip="Artikel: PowerShell-Objekte in 3 Schritten erfolgreich analysieren" ; Resource="https://attilakrick.com/powershell/powershell-objekt-analyse/"}
$totdDb += [TipOfTheDay]@{Id = 504 ; Professionalism = "Beginner"     ; Tip="Artikel: PowerShell 7 Neuerungen und Gründe für den Umstieg" ; Resource="https://attilakrick.com/powershell/neuerungen-powershell-7/"}
$totdDb += [TipOfTheDay]@{Id = 505 ; Professionalism = "Professional" ; Tip="Artikel: PowerShell Sicherheit in 6 Schritten produktiv absichern" ; Resource="https://attilakrick.com/powershell/powershell-sicherheit/"}
$totdDb += [TipOfTheDay]@{Id = 506 ; Professionalism = "Professional" ; Tip="Artikel: Sensible Daten mit PowerShell verschlüsseln" ; Resource="https://attilakrick.com/powershell/verschluesseln-mit-powershell/"}
$totdDb += [TipOfTheDay]@{Id = 507 ; Professionalism = "Beginner"     ; Tip="Artikel: PowerShell Seminare für Anfänger und Profis" ; Resource="https://attilakrick.com/powershell/powershell-seminare/"}
$totdDb += [TipOfTheDay]@{Id = 508 ; Professionalism = "Beginner"     ; Tip="Artikel: Einstieg in PowerShell für Anfänger und Profis" ; Resource="https://attilakrick.com/powershell/powershell-tutorial/"}
$totdDb += [TipOfTheDay]@{Id = 509 ; Professionalism = "Professional" ; Tip="Artikel: WPF-GUI mit PowerShell erstellen" ; Resource="https://attilakrick.com/powershell/gui-mit-powershell-erstellen/"}
$totdDb += [TipOfTheDay]@{Id = 510 ; Professionalism = "Beginner"     ; Tip="Artikel: PowerShell Pipeline Sinn & Nutzen erklärt" ; Resource="https://attilakrick.com/powershell/funktionsweise-powershell-pipeline/"}
$totdDb += [TipOfTheDay]@{Id = 511 ; Professionalism = "Beginner"     ; Tip="Artikel: Wissenswerte und Nützliche Quellen" ; Resource="https://attilakrick.com/allgemein/wissenswert/"}
$totdDb += [TipOfTheDay]@{Id = 714 ; Professionalism = "Beginner"     ; Tip="Cmdlet: Get-Hotkeys => Zeigt die wichtigsten Tastatur-Befehle rund um PowerShell an." ; Resource="Get-Hotkeys"}
$totdDb += [TipOfTheDay]@{Id = 715 ; Professionalism = "Beginner"     ; Tip="Die Syntax für ein Cmdlet erhalten." ; Resource="Get-Command -Name Get-Process -Syntax"}
$totdDb += [TipOfTheDay]@{Id = 716 ; 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 = 717 ; Professionalism = "Beginner"     ; Tip="Du kannst Visual Studio Code über die 'settings.json' an Deine Bedürfnis anpassen."                  ; Resource=".\Private\Wissen\B_Basic\B17_Tool_VisualStudioCode.md"}
$totdDb += [TipOfTheDay]@{Id = 718 ; 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 = 719 ; 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 = 720 ; 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 = 721 ; Professionalism = "Humor"        ; Tip="Mann lernt nicht richtig zu fluchen bis mann Auto fahren lernt."                                                      ; Resource="Get-Process | Select-Object -Property *"}
$totdDb += [TipOfTheDay]@{Id = 722 ; Professionalism = "Humor"        ; Tip="Die PowerShell-Standard-Ausgabe zeigt nie das was man wissen will."                                                   ; Resource=""}
$totdDb += [TipOfTheDay]@{Id = 723 ; Professionalism = "Beginner"     ; Tip="'Get-Alias' ist für kryptische Befehle der erste Schritt zur Auslösung."                                              ; Resource="Get-Alias"}
$totdDb += [TipOfTheDay]@{Id = 724 ; 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 = 725 ; 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