Benutzer-Werkzeuge

Webseiten-Werkzeuge


powershell:eigene_funktion_whatif_und_confirm

Eigene Funktion WhatIf und Confirm

Mit Hilfe von [CmdletBinding()] lassen sich die Standardparameter von Powershell einbinden.

Möchte man die Parameter WhatIf und Confirm verwenden, muss man beim CmdletBinding Werte übergeben

WhatIf

Beispielfunktion:

function HelloWorld{
  [CmdletBinding(SupportsShouldProcess=$True)]
  param(
    [Parameter(Mandatory=$True)][System.String]$Greeting
  )
  begin{}
  process{
    if ($PSCmdlet.ShouldProcess("Parameter ausgeben")){
      Write-Host $Greeting;
    }
  }
  end{}
}

Diese Beispielfunktion gibt den String aus, den man mit dem Parameter Greeting übergibt. Beispiel:

PS C:\Powershell> HelloWorld -Greeting "Bon Jour!"
Bon Jour!

Wenn man jetzt den Parameter WhatIf übergibt, führt die Powershell den Befehl nicht aus, sondern beschreibt, was wir zuvor angegeben haben:

PS C:\Powershell> HelloWorld -Greeting "Hallo!" -WhatIf
What if: Performing the operation "HelloWorld" on target "Parameter ausgeben".

Confirm

Möchte man zusätzlich gefragt werden, ob eine Aktivität ausgeführt werden darf (Z.B. Löschen, Ändern von Dingen, o.ä.), kann man den Confirm-Level mit übergeben:

function HelloWorld{
  [cmdletBinding(SupportsShouldProcess=$True,ConfirmImpact='High')]
  ...

Standardmäßig fragt die Powershell immer dann nach, wenn das in einer Funktion oder Cmdlet angegebene Confirm-Level gleich oder höher ist als das gegenwertig in der Session angegebene Confirm-Level ($ConfirmPreference). Möglich sind die Werte 'None', 'Low', 'Medium' und 'High'

Testet man die so angepasste Funktion erneut aus, fragt die Powershell explizit nach:

PS C:\Powershell>HelloWorld -Greeting "Aloha!"
 
Confirm
Are you sure you want to perform this action?
Performing the operation "HelloWorld" on target "Parameter ausgeben".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
Aloha!

Quelle, Quelle2

powershell/eigene_funktion_whatif_und_confirm.txt · Zuletzt geändert: 2020/01/20 14:06 von ronny

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki