Table of Contents

Проблема

Просрочился пароль. Залогиниться не удается. Доступа к консоли компа нет - только удаленный доступ в сеть.
Как удаленно сбросить просроченный пароль от учетки Active Directory, про условии, что она не залочена, старый пароль известен и есть доступ в сеть, пусть даже под учеткой с меньшими привилегиями?

Решение

Можно применить скрипт Powershell:

    function Set-PasswordRemotely {
        [CmdletBinding()]
        param(
            [Parameter(Mandatory = $true)][string] $UserName,
            [Parameter(Mandatory = $true)][string] $OldPassword,
            [Parameter(Mandatory = $true)][string] $NewPassword,
            [Parameter(Mandatory = $true)][alias('DC', 'Server', 'ComputerName')][string] $DomainController
        )
        $DllImport = '
    [DllImport("netapi32.dll", CharSet = CharSet.Unicode)]
    public static extern bool NetUserChangePassword(string domain, string username, string oldpassword, string newpassword);
    '
        $NetApi32 = Add-Type -MemberDefinition $DllImport -Name 'NetApi32' -Namespace 'Win32' -PassThru
        if ($result = $NetApi32::NetUserChangePassword($DomainController, $UserName, $OldPassword, $NewPassword)) {
            Write-Output -InputObject 'Password change failed. Please try again.'
        } else {
            Write-Output -InputObject 'Password change succeeded.'
        }
    }

    Set-PasswordRemotely 'username' 'OlD_Pa$$W0Rd' 'NeW_P@$$W0rD' 'domain_controller.domain.local'