WhatIf in Powershell

Jetzt mal ganz ehrlich, jeder macht mal Fehler in der Powershell und schwups die Datei, der Ordner oder das Zertifikat ist geändert bzw. gelöscht was man eigentlich nicht so direkt wollte. Abhilfe schafft hier die Variable $WhatifPreference bzw. $PSDefaultParameterValues

Angenommen es geht um das löschen von Dateien:

Ruft ihr folgenden Befehl auf wird die Datei gleich ohne Nachfrage gelöscht:

Viele CMDlets besitzen wie wir ja wissen den Parameter -WhatIf

Angenommen ihr benötigt dies häufiger und wollt immer zuerst ein -WhatIf bzw. das verhalten umkehren so hilft die Variable $WhatIfPreference weiter.

Wie man oben erkennen kann hat diese derzeit den Wert False.

Mit dem setzen der Variable auf True wird nun bei jeden CMDlet welches den -WhatIf Parameter besitzt dieses automatisch dazugehängt.

Will man nun die Standardeinstellung für einen einzelnen Befehl überschreiben schaut es so aus:

Soweit so gut. Gehen wir einen Schritt weiter. Es gibt einige Set- bzw. New- CMDlets welche auch ein -WhatIf besitzen allerdings willst du nur bei Remove- CMD-lets WhatIf als Standard machen. Hier helfen uns die $PSDefaultParameterValues weiter.

Um es nur bei Remove- CMDlets zu sezten schaut der Befehl so aus:

Bei vielen Dingen praktisch wenn man weis wie es funktioniert.