Использование учетных данных с ADSI для сброса пароля учетной записи удаленного локального компьютера - PullRequest
1 голос
/ 09 октября 2019

Попытка изменить удаленный пароль Windows с использованием явных учетных данных с помощью PowerShell.

Мне удалось выполнить эту работу с использованием интерфейса ADSI, но сценарий выполняется из учетной записи без повышенных прав, и поэтомуне имеет разрешений. Мне нужно попросить пользователя ввести учетную запись с повышенными правами, а затем использовать эту учетную запись при установлении соединения.

Это работает:

$server = "Server1"
$adminID = "Administrator"
$Password = "NewPassword"
$OldPassword = "OldPassword"

([ADSI] "WinNT://$server/$adminID").SetPassword($Password)

Но мне также нужно включить старый пароль дляучетной записи, так что у меня есть разрешения на внесение изменений.

Есть ли способ установить соединение с сервером как $AdminD с $OldPassword, а затем изменить его на $NewPassword?

1 Ответ

0 голосов
/ 09 октября 2019

Нашли решение.

        $credential = New-Object System.Management.Automation.PSCredential($($server + "\" +$AdminID),$Oldpassword)

        $pth = "\\$($server)\admin$"

        write-host "Making connection to server with creds." -nonewline

            # test for the drive, and remove if present.    

        if (![bool]([string]::IsNullOrEmpty($(get-psdrive x -ErrorAction SilentlyContinue).root)))
        {
            remove-PSDrive -Name X
            write-host "Drive unmapped," -nonewline
        }

        New-PSDrive -Name X -PSProvider filesystem  -Root $pth -Credential $credential | out-null
        write-host " PS Drive established.. " -nonewline


        ([ADSI] "WinNT://$server/$adminID").SetPassword($Password)


При первом установлении соединения с сервером второй вызов для сброса пароля использует те же учетные данные, которые уже установлены.

По завершенииЯ вызываю следующее, чтобы отключить диск ..

    # test for the drive, and remove if present.    
    if (![bool]([string]::IsNullOrEmpty($(get-psdrive x -ErrorAction SilentlyContinue).root)))
    {
        remove-PSDrive -Name X
        write-host "Drive unmapped."
    }

Если есть лучший способ, я хотел бы знать, что это такое. Но, по крайней мере, это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...