Public/Remove-WindowsADActivationObject.ps1
|
#Requires -Version 5 function Remove-WindowsADActivationObject { [OutputType([PSCustomObject])] [CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = 'High', PositionalBinding = $false)] param( [Parameter(Mandatory)] [string]$DistinguishedName, [string]$DirectoryServer, [PSCredential]$DirectoryCredential ) $contextParams = @{} if ($PSBoundParameters.ContainsKey('DirectoryServer')) { $contextParams['Server'] = $DirectoryServer } if ($PSBoundParameters.ContainsKey('DirectoryCredential')) { $contextParams['Credential'] = $DirectoryCredential } $context = Get-ADActivationContext @contextParams $lookupParams = @{ Context = $context; DistinguishedName = $DistinguishedName } if ($PSBoundParameters.ContainsKey('DirectoryServer')) { $lookupParams['Server'] = $DirectoryServer } if ($PSBoundParameters.ContainsKey('DirectoryCredential')) { $lookupParams['Credential'] = $DirectoryCredential } $target = @(Get-ADActivationObjectRecord @lookupParams) if ($target.Count -ne 1) { throw "Active Directory activation object '$DistinguishedName' could not be resolved unambiguously." } $resolved = $target[0] if (-not $PSCmdlet.ShouldProcess($resolved.DistinguishedName, "Remove Active Directory activation object '$($resolved.Name)'")) { return } $removeParams = @{ Identity = $resolved.DistinguishedName; Confirm = $false; ErrorAction = 'Stop' } if ($PSBoundParameters.ContainsKey('DirectoryServer')) { $removeParams['Server'] = $DirectoryServer } if ($PSBoundParameters.ContainsKey('DirectoryCredential')) { $removeParams['Credential'] = $DirectoryCredential } Remove-ADObject @removeParams $verifyParams = @{ Context = $context } if ($PSBoundParameters.ContainsKey('DirectoryServer')) { $verifyParams['Server'] = $DirectoryServer } if ($PSBoundParameters.ContainsKey('DirectoryCredential')) { $verifyParams['Credential'] = $DirectoryCredential } $remaining = @(Get-ADActivationObjectRecord @verifyParams | Where-Object { $_.DistinguishedName -eq $resolved.DistinguishedName }) if ($remaining.Count -ne 0) { throw "Active Directory activation object '$($resolved.DistinguishedName)' remains after deletion." } $result = New-LicensingOperationResult -ComputerName 'localhost' -Operation 'RemoveADActivationObject' -Success $true -VerificationState Verified Add-Member -InputObject $result -NotePropertyName Forest -NotePropertyValue $context.Forest Add-Member -InputObject $result -NotePropertyName Domain -NotePropertyValue $context.Domain Add-Member -InputObject $result -NotePropertyName ActivationObjectName -NotePropertyValue $resolved.Name Add-Member -InputObject $result -NotePropertyName DistinguishedName -NotePropertyValue $resolved.DistinguishedName return $result } |