Dynamisches WhatIF

Dieses Beispiel ist vielleicht mit Kanonen auf Spatzen geschossen, aber es reist ein sehr interessantes Thema an. Bei dem Kopieren von Ordnern frage ich mich ab und an, was für Dateien eigentlich kopiert werden. Mit Hilfe des Schalters WhatIf wird lediglich der Ordner angezeigt.

Zum Testen werden zwei Ordner genutzt C:\source und C:\destination. In source werden einige Textfiles erstellt:

create_testfiles

copy_folder_whatif

Nun stellte sich für mich die Frage wie können die zu kopierenden Dateien im Ordner an Whatif übergeben werden? Und die Antwort ist PSBoundparameter. Zu den PSBoundparametern werde ich wahrscheinlich nochmal einen extra Blogbeitrag schreiben. Wie es in diesem Fall geht, zeige ich euch jetzt:

In den PSBoundparametern gibt es eine Variable WhatIf und wenn der WhatIf-Schalter in einer Funktion gesetzt wurde, ist diese Variable $true. Setzen wir nun diesen Parameter in eine If-Abfrage und kombinieren diese mit Get-ChildItem, haben wir unseres dynamisches WhatIf.

Wie gesagt, es ist etwas übertrieben, aber ein gutes Einsteiger-Beispiel.

Beachtet! Wenn vorher ein Netzlaufwerk oder eine Session verbunden wird, kommt es zu einer Fehlermeldung. Grund ist, dass wenn der Schalter WhatIf gesetzt ist, jede Funktion/CmdLet den Schalter gesetzt bekommt. Dies lässt sich einfach umgehen, indem die Systemvariable $WhatIfPreference angepasst wird.

Über Andreas Bittner

MCSA Server 2016, MCSA Server 2012R2, Exchange 2010 & SharePoint Devop
Dieser Beitrag wurde unter Allgemein, DevOps, Grundlage, PowerShell abgelegt und mit , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*