I took a question fom an IT Professional who needed to know the Impact Level of various PowerShell commands. The Impact Level works with the variable $ConfirmPreference. If a cmdlets Impact Level is equal to or higher than $ConfirmPreference , the user will be prompted to confirm the operation before proceeding.
Cmdlets and functions store this information in two different places. For a cmdlet, it is stored in the metadata for the cmdlet. For a function, it is stored in line 2 of the functions scriptblock. The code below will examine all cmdlets and functions and let you know the impact level of each, if once exists.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | # Check all cmdelts $Cmdlet = Get-Command -CommandType cmdlet | ForEach-Object { Try { $_ | Select-Object -Property @{N = "Command";E={$_.Name}}, @{N="Impact";E={$_.ImplementingType.GetCustomAttributes($True).confirmimpact}} } Catch { $_ | Select-Object -Property @{N = "Command";E={$_.Name}}, @{N="Impact";E={"Unknown"}} } }
#Check all functoins $Function = Get-Command -CommandType Function | ForEach-Object {
$C = $_.Definition.Split("`n") If ($C[1] -like "*ConfirmImpact='High'*") { $_ | Select-Object -Property @{N = "Command";E={$_.Name}}, @{N="Impact";E={"High"}} } ElseIf ($C[1] -like "*ConfirmImpact='Medium'*") { $_ | Select-Object -Property @{N = "Command";E={$_.Name}}, @{N="Impact";E={"High"}} } ElseIf ($C[1] -like "*ConfirmImpact='Low'*") { $_ | Select-Object -Property @{N = "Command";E={$_.Name}}, @{N="Impact";E={"Low"}} } Else { $_ | Select-Object -Property @{N = "Command";E={$_.Name}}, @{N="Impact";E={""}} } }
# Combine and sort the results. $Cmdlet += $Function $Cmdlet | Sort-Object -Property command |
Comments
http://tahirhassan.blogspot.co.uk/2017/01/powershell-get-confirmimpact-function.html