Wissen/C06_AufbauAusführbareDatei.ps1

# ? TITEL Aufbau von ausführbaren Dateien
# ? DESCRIPTION Musteraufbau von .PS1- und .PSM1-Dateien
# ? TAGS PS1 PSM1 TEMPLATE
# ? VERSION 2019.09.20.0800

# ! 1. Als Übersicht der zu evtl. installierenden Module
using Module Microsoft.PowerShell.Management # Identisch wie: Import-Module -Name Microsoft.PowerShell.Management
using Module Microsoft.PowerShell.Utility

# ! 2. using-Anweisung MÜSSEN immer zu erst kommen
using namespace System.Windows.Forms         # Verkürzung von System.Windows.Forms.Form auf Form
using namespace System.Management.Automation # Verkürzung von System.Management.Automation.ActionPreference auf ActionPreference

# ! 3. Beim ersten Fehler im Script-Ablauf soll das Skript abbrechen (Default => Continue)
$ErrorActionPreference = [ActionPreference]::Stop

# ! 4. Benötigte .NET Assembly laden (Nötig wenn es Fehler gibt bzgl. '....-Typ nicht gefunden')
Add-Type -AssemblyName System.Windows.Forms

# ! [5. Script-Übergabe-Parameter definieren]
param ([string]$Path, [int]$BenutzerId)
# ? MeinScript.ps1 -Path c:\temp -BenutzerId 47110815

# ! [6.] Vor der ersten Verwendung von Variablen
# ! Stellt sich das Variablen vor der Benutzung deklariert werden müssen, z.B. durch Zuweisung.
Set-StrictMode -Version Latest

# ! [7.] Vor der ersten Verwendung von Functions die Function-Definitionen erstellen/laden.
function Invoke-Irgendwas {
    param ([string]$Stadtname)
    $Stadtname
}

# ! 8. Logik-Code des Script-Datei:
$prozesse = Get-Process
foreach($p in $prozesse) {
    $prozessname = $p.Name
    if($prozessname -eq "notepad") {
        $p.Kill()
    }
}
$fenster = New-Object -TypeName Form # ? siehe using-Anweisung oben
$fenster.ShowDialog()

Invoke-Irgendwas -Stadtname Köln

# ! [9. Digitale Signatur]