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:
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