Wenn man öfter Scripte in Powershell schreiben muss, dann wünscht man sich gelegentlich einen dynamischeren Umgang mit der Darstellung von Infonachrichten.

Powershell bietet von Haus an, Verbose-Nachrichten zu erzeugen. Dies geschieht mittels des Cmdlets:

Write-Verbose "Insert $Message here!"

damit Verbose-Benachrichtigungen bei der Ausführung eines Scriptes angezeigt werden, gibt es mehrere Möglichkeiten:

Die erste Variante ist die, dass wir dem Cmdlet selbst den Verbose-Parameter mitgeben:

Write-Verbose "Insert $Message here!" -Verbose

Dies ist natürlich ein Stück weit sinnbefreit. Deshalb ergibt es Sinn, zu Beginn eines Scriptes folgende Definitionen zu setzen (analog zu einer Powershell-Funktion)

[CmdletBinding()]
param()

Anschließend lässt das Script beim Aufruf den Verbose-Parameter zu:

script-test.ps1 -Verbose

Die Powershell setzt für die Laufzeit des Scripts den Variable $VerbosePreference auf "Continue" (falls der Parameter übergeben wird) oder auf "SilentlyContinue" (falls der Parameter fehlt).

Dies kann man innerhalb des Scripts ausnutzen und unbeliebte Teile des Scripts (zum Beispiel beim Import von Powershell-Modulen) ausblenden

$VerbosePreferenceOLD = $VerbosePreference
$VerbosePreference = [System.Management.Automation.ActionPreference]::SilentlyContinue

Import-Module ActiveDirectory
Import-Module SomeOtherModule
.
.
.

$VerbosePreference = $VerbosePreferenceOLD

Man kann zwar auch

$VerbosePreference = "Continue"

schreiben (und bis heute hat das auch fast immer bei mir geklappt), jedoch die Variable sauber zu definieren stellt sicher, dass das Script auch in späteren Powershellversionen funktionieren wird.