Module 101

Unsere einfachen Module bestehen aus:

  • Ordner mit ModulName

  • im Ordner gleichnamig *.psm1

    Datei: ModulName.psm1

Für die folgenden Erstellungen muss der PowerShell-Host (Tipp: ISE) die Funktion kennen!

Hier: Funktion Get-CriticalEvent – Fehler und Warnungen aus System-Ereignisprotokoll – letzte 48 Stunden).

PS E:\_temp> Get-CriticalEvent

TimeGenerated       Message
-------------       -------
16.10.2016 09:06:36 Benutzerdefinierte DLLs werden für jede Anwendung geladen. Systemadminis...
16.10.2016 09:06:28 Für ein Zeigegerät fehlen Informationen zum Monitor, mit dem es ...
...

Erstellung des Modulcontainers (Ordner) und der *.psm1 Moduldatei:

Anm. zum Training: vor der Durchführung der Skriptzeilen bitte die einzelnen Zeilen analysieren!

Sehr einfaches Modul erstellen
1$name = "Get-CriticalEvent"
2$path = Split-Path -Path $profile
3$code = "function $name { $((Get-Item function:\$name).Definition) }"
4New-Item -Path $path\Modules\$name\$name.psm1 -ItemType File -Force -Value $code

Erster Test für die Verfügbarkeit des Cmdlet per Modul:

PS E:\_temp> Get-Module get-cr* -ListAvailable

Verzeichnis: C:\Users\joebr_000\Documents\WindowsPowerShell\Modules

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     0.0        Get-CriticalEvent                   Get-CriticalEvent

Ab jetzt erkennen auch die anderen PowerShell-Hosts den neuen Befehl und nach einem Aufruf des Befehls werden auch die Modul-Infos (ohne –ListAvailable) ausgegeben.

Analysen mit Get-Module

PS E:\_temp> Get-Module

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Computer, Add-Content, Checkpo...}
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Add-Member, Add-Type, Clear-Variab...}
Script     1.0.0.13   PSReadline                          {Get-PSReadlineKeyHandler, Get-PSRe...

PS E:\_temp> Get-CriticalEvent -ShowWindow
PS E:\_temp> Get-Module

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     0.0        Get-CriticalEvent                   Get-CriticalEvent
Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Computer, Add-Content, Checkpo...}
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Add-Member, Add-Type, Clear-Variab...}
Script     1.0.0.13   PSReadline                          {Get-PSReadlineKeyHandler, Get-PSRe...

Ausführliche Darstellung der aktuellen Modultechniken bei Weltner