lib/core/windows/Remove-IcingaWindowsUser.psm1

function Remove-IcingaWindowsUser()
{
    param (
        $IcingaUser = 'icinga'
    );

    $UserConfig = Get-IcingaWindowsUserConfig -UserName $IcingaUser;

    if ($UserConfig.UserExist -eq $FALSE -Or $UserConfig.IcingaManagedUser -eq $FALSE) {
        if ($UserConfig.UserExist -eq $FALSE) {
            Write-IcingaConsoleNotice 'The user "{0}" is not present on this system' -Objects $IcingaUser;
        } elseif ($UserConfig.IcingaManagedUser -eq $FALSE) {
            Write-IcingaConsoleNotice 'The user "{0}" was not created by Icinga for Windows. Unable to remove user' -Objects $IcingaUser;
        }

        return @{
            'User' = $IcingaUser;
            'SID'  = $SID;
        };
    }

    $Result = Start-IcingaProcess -Executable 'net' -Arguments ([string]::Format('user "{0}" /DELETE', $UserConfig.Name));

    if ($Result.ExitCode -ne 0) {
        Write-IcingaConsoleError 'Failed to delete user "{0}": {1}' -Objects $IcingaUser, $Result.Error;
    } else {
        # Delete Home Directory
        $HomePath = Join-Path -Path ($ENV:HOMEDRIVE) -ChildPath (Join-Path -Path '\Users\' -ChildPath $IcingaUser);
        Remove-ItemSecure -Path $HomePath -Recurse -Force | Out-Null;
    }

    return @{
        'User' = $UserConfig.Caption;
        'SID'  = $UserConfig.SID;
    };
}