Проблема
Просрочился пароль. Залогиниться не удается. Доступа к консоли компа нет - только удаленный доступ в сеть.
Как удаленно сбросить просроченный пароль от учетки 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'
Discussion