Modultechnik erweitern

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

1

Anleitung Weltner PowerShell 5.0 Kapitel 17 ab S. 589ff.

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
 1 function 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