Adding–WhatIf and–Confirm to your Powershell scripts
Recent am avut de facut un script ce modifica informatii din Active Directory, si printre mecanismele de protectie am adaugat si WhatIf. Dar intr-un mod primitiv. Am pus o gramada de If/Else si am rulat comenzile din interiorul scriptului cu WhatIf.
Dupa ce am terminat scriptul am aflat si eu ca puteam implementa WhatIf si Confirm la nivel de script sau functie doar printr-o simpla delcaratie.
Simpla adaugare la inceputul scriptului a urmatoarelor:
[CmdletBinding(SupportsShouldProcess)]
Param()
Va implementa suportul pentru WhatIf si Confirm.
Ruland scriptul cu parametrul –WhatIf va face ca fiecare comanda din script ce implementeaza WhatIf sa ruleze in acest mod. Fara a mai pune o gramada de If/Else si alt cod redundant.
Ceva mai detaliat gasiti si aici: https://blogs.technet.microsoft.com/poshchap/2014/10/24/scripting-tips-and-tricks-cmdletbinding/
Iar daca vreti sa verificati in interiorul scriptului daca s-a folosit parametrul WhatIf puteti verifica variabila $WhatIfPreference. Un exemplu mai jos:
If ($WhatIfPreference)
{
Write-Host "Script is running in WhatIf mode." -ForegroundColor yellow -BackgroundColor Black
}