Modultechnik erweitern

Die folgende Kurzanleitung für die komplette Modultechnikdarstellung gemäß [1]

Wir benötigen für unser Modul einen Entwurfsordner. Diesen kannn man zum Testen einfach auch gerne auf dem Desktop platzieren für erste Tests mit dem neuen Modul und seinen Funktionen/Techniken.

Wir beginnen mit einem Beispielordner mit aussagekräftigem Modulnamen:

New-Item -Path $home\Desktop\JBSystemTools -ItemType Directory

Eine Funktion bereitstellen für das neue Modul:

Function Get-SoftwareUpdate.ps1
 1function Get-SoftwareUpdate
 2{
 3    $Filter = @{
 4      ProviderName="Microsoft-Windows-WindowsUpdateClient"
 5      ID=19
 6    }
 7
 8  Get-WinEvent -FilterHashtable $filter |
 9    ForEach-Object {
10      $rv = $_ | Select-Object -Property TimeCreated, Name, Activity, Status
11      $rv.Name = $_.Properties[0].Value
12      $rv.Activity = $_.KeywordsDisplayNames[0]
13      $rv.Status = $_.KeywordsDisplayNames[1]
14      $rv
15    }
16  
17}

Und diese Funktion als ps1-Datei im Modulordner speichern.

Die Funktion kann man nun erst einmal „manuell“ aufrufen und dann die neue Funktion Get-SoftwareUpdates nutzen.

Jetzt benötigen wir im Modulordner noch die eigentliche Moduldatei (Endung: psm1):

Hinweis

Die psm1-Datei muss denselben Namen haben, wie der übergeordnete Modulordner!

Hier:

  • Ordner: JBSystemTools

  • Moduldatei im Ordner: jbsystemtools.psm1

Inhalt der jbsystemtools.psm1 Datei:

. $PSScriptRoot\Get-SoftwareUpdate.ps1

Also einfach mit Dot-Sourcing die gewünschte Funktionen-Skriptdatei laden lassen.

Unser „Modul-Testordner“ befindet sich aktuell nicht in den PSProfilPfad-Ordner (s.o.) und daher müssen wir diese Modul-Technik noch manuell importieren:

Import-Module $HOME\Desktop\JBSystemTools -Verbose

Anm.: Parameter -Verbose für zusätzliche Infos beim Modul-Import (dt.: geschwätzig) und bitte keinen Backslash nach dem Modulordnernamen oder komplett die psm1-Datei angeben.

Damit unser Modul jetzt automatisch geladen (bzw. gefunden) werden kann, muss der Modul-Ordner nur noch an einen unserer $PSModulePath kopiert werden. Gerne einfach mit dem „robusten Universal- Werkzeug robocopy“:

robocopy $HOME\Desktop\JBSystemTools $HOME\Documents\WindowsPowerShell\Modules\JBSystemTools