Private/InvokeUserTermination.ps1
function InvokeUserTermination { [OutputType('void')] [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')] param ( [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [object]$AdUser, [Parameter()] [ValidateNotNullOrEmpty()] [scriptblock]$UserTerminationAction ) switch ((GetPsAdSyncConfiguration).UserTermination.Action) { 'Disable' { if ($PSCmdlet.ShouldProcess("AD User [$($AdUser.Name)]", 'Disable')) { Disable-AdAccount -Identity $AdUser.samAccountName -Confirm:$false } } 'Custom' { if (-not $PSBoundParameters.ContainsKey('UserTerminationAction')) { throw 'Custom user termination action chosen in configuration but no custom action was specified.' } & $ } default { throw "Unrecognized user termination action: [$_]" } } } |