Unregister-DSCTrigger.ps1
function Unregister-DSCTrigger { <# .Synopsis Unregisters a trigger to run a Powershell configuration .Description Unregisters a WMI event trigger that would start a PowerShell configuration .Link Register-DSCTrigger .Link Get-DSCTrigger .Example Unregister-DSCTrigger "MyTrigger" #> [CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact='High')] [OutputType([Nullable])] param( # The name of the DSC trigger [Parameter(Mandatory=$true,Position=0,ValueFromPipelineByPropertyName=$true)] [string] $Name ) process { #region Locate the consumer and delete associated objects $matchingConsumer = Get-WmiObject -Namespace root\subscription -Filter "Name = '${Name}_DSCConsumer'" -Class CommandLineEventConsumer if ($matchingConsumer) { if ($PSCmdlet.ShouldProcess("Remove DSC Trigger $Name")) { $related = $matchingConsumer.GetRelated() $relationships = $matchingConsumer.GetRelationships() foreach ($_ in $related) { $_.Delete() } foreach ($_ in $relationships) { $_.Delete() } $matchingConsumer.Delete() } } #endregion Locate the consumer and delete associated objects } } |