Public/Complete-UserProvisioningSyncSessionOperation.ps1

function Complete-UserProvisioningSyncSessionOperation {
    [CmdletBinding()]

    Param(
        [Parameter(Mandatory = $false, ValueFromPipeline = $true)]
        $Operation
    )

    Process {
        if ($Operation.Action -eq "New-ADUser") {
            $Operation | Show-UserProvisioningSyncSessionOperation -Single

            $Password = ConvertTo-SecureString -String (New-Guid).ToString() -AsPlainText -Force
            $Parameters = $Operation.Parameters
            New-ADUser -AccountPassword $Password @Parameters -Passthru | Out-Null
        }
        elseif ($Operation.Action -eq "Set-ADUser") {
            $Operation | Show-UserProvisioningSyncSessionOperation -Single
            $Parameters = $Operation.Parameters
            Set-ADUser -Identity $Operation.Identity @Parameters

            Write-Verbose "Updated AD user '$($Operation.Identity)'."
        }
        elseif ($Operation.Action -eq "Remove-ADObject") {
            $Operation | Show-UserProvisioningSyncSessionOperation -Single
            Remove-ADObject -Identity $Operation.Identity -Confirm:$false
            
            Write-Verbose "Removed AD object '$($Operation.Identity)'."
        }
        elseif ($Operation.Action -eq "Rename-ADObject") {
            $Operation | Show-UserProvisioningSyncSessionOperation -Single
            $Parameters = $Operation.Parameters
            $ADUser = Get-ADUser -Identity $Operation.Identity
            Rename-ADObject -Identity $ADUser.DistinguishedName @Parameters -Confirm:$false

            Write-Verbose "Renamed AD object '$($Operation.Identity)' to '$($Operation.Parameters.NewName)'."
        }
        elseif ($Operation.Action -eq "Move-ADObject") {
            $Operation | Show-UserProvisioningSyncSessionOperation -Single
            $Parameters = $Operation.Parameters
            $ADUser = Get-ADUser -Identity $Operation.Identity
            Move-ADObject -Identity $ADUser.DistinguishedName @Parameters -Confirm:$false

            Write-Verbose "Moved AD object '$($Operation.Identity)' to '$($Operation.Parameters.TargetPath)'."
        }
        else {
            Write-Error "Unknown operation action '$($Operation.Action)'."
        }
    }
}