poniedziałek, 10 marca 2014

Szybka implementacja WhatIf i Confirm w PS

Kiedyś nie wiedziałem o parametrach SupportsShouldProcess i ConfirmImpact. Z powodu tej niewiedzy ręcznie implementowałem WhatIf i Confirm za pomoca [switch] w parametrze.

Ten poniższy kod jest bardziej dla mnie niż dla kogoś innego, ponieważ teraz prawie zawsze staram się używać tych dwóch parametrów, a zawsze zapominam sobie o tych nazwach :)

function Get-CmdletJson
{
     [cmdletBinding(SupportsShouldProcess=$true,ConfirmImpact='Medium')] 
     param()
    
    if($PSCmdlet.ShouldProcess(' $PSCmdlet'))
    {
        $PSCmdlet | ConvertTo-Json
    }
}

Kiedy wywoła się polecenie z parametrem WhatIF to wyświetli się poniższy komunikat:
Get-CmdletJson -WhatIf
#What if: Performing the operation "Get-CmdletJson" on target " $PSCmdlet".

W przypadku Conform to potwierdzenie jest uzależnione od hosta
Get-CmdletJson -Confirm

Poniższy rysunek przedstawia 2 różne host. Małe okienko potwierdzenia należy do PowerShell ISE, a duże okienko tekstowe należy do PowerShell ConsoleHost:



Brak komentarzy:

Prześlij komentarz