Доступ запрещен, когда Reset-ComputerMachinePassword запускается с помощью команды Invoke

Я использую следующую команду для сброса пароля удаленной машины.

$user="Domain\domainadmin";
$pass="dapassword" | ConvertTo-SecureString -AsPlainText -Force;
$creds=New-Object System.Management.Automation.PSCredential -ArgumentList $UserName, $pass;
Invoke-Command -Credential $creds -ComputerName "DomainControllerMachine" -ScriptBlock{ 
$ComputerName = @"
SomeRemoteHost
"@
Import-Module ActiveDirectory; 
Reset-ComputerMachinePassword -Server ${ComputerName};
}

Я продолжаю получать сообщение об ошибке «Доступ запрещен».

This command cannot be executed on target computer('DomainControllerMachine') due to following error: Access is
 denied.
    + CategoryInfo          : InvalidOperation: (DomainControllerMachine:String) [Reset-ComputerMachinePasswor
   d], InvalidOperationException
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.ResetCompute
   rMachinePasswordCommand

Используемая мной учетная запись имеет все уровни доступа к ActiveDirectory. Таким образом, не будет проблем с учетными данными, используемыми для аутентификации.

Если я запускаю ту же команду на «DomainControllerMachine» (войдя в систему как тот же пользователь), она работает нормально.

Import-Module ActiveDirectory; 
Reset-ComputerMachinePassword -Server "SomeRemoteHost";

Даже весь приведенный выше блок команд вызова работает без жалоб на DomainControllerMachine. Но когда я делаю это удаленно через Invoke-Command или Enter-PSSession, я получаю эту ужасную ошибку отказа в доступе.

Я также безуспешно пытался использовать CredSSP после настройки WSManCredSSP (клиент, делегирование и сервер) на машинах.

Возможно, я что-то упустил, или есть лучший способ справиться с таким случаем?


person Onewildgamer    schedule 21.01.2015    source источник
comment
Вы делаете это с той же машины, на которой сбрасываете учетную запись?   -  person mjolinor    schedule 21.01.2015
comment
Возможно, вы пытались сохранить вызванные команды в виде скрипта на целевой машине, а затем использовать Invoke для запуска этого скрипта? social.technet. microsoft.com/Forums/en-US/   -  person Trey Nuckolls    schedule 21.01.2015
comment
Запустите сеанс powershell с повышенными привилегиями (щелкните правой кнопкой мыши > Запуск от имени администратора)   -  person Raf    schedule 21.01.2015
comment
@mjolinor нет, это разные машины   -  person Onewildgamer    schedule 21.01.2015
comment
@ Раф Да, я всегда так делаю. Оболочка запускается от имени администратора.   -  person Onewildgamer    schedule 21.01.2015
comment
Вы пытались использовать параметр -Authentication Kerberos для Invoke-Command и работать как учетная запись с администратором домена? Это скрипт или вы выполняете эти команды напрямую в оболочке?   -  person Colyn1337    schedule 21.01.2015
comment
@Раф спасибо! совсем пропустил это.   -  person IMFletcher    schedule 04.03.2017


Ответы (1)


Мне кажется, что вы запускаете команду Reset-computermachinepassword на контроллере домена. Насколько я знаю, его нужно запускать на компьютере, который нужно перезагрузить, с именем DC в поле -server.

Для этого вам нужно будет запустить команду на компьютере, для которого требуется сброс учетных данных:

Reset-Computermachinepassword -server "DomainControllerMachine" -credential $PScredential

Вы можете попробовать сделать это удаленно с помощью PSsession, если на компьютере включено удаленное взаимодействие с PowerShell. Вам нужно будет указать другой метод аутентификации, чтобы получить доступ к компьютеру, который потерял доверие домена.

Вы можете использовать Credssp, но это будет работать только в том случае, если ваш объект групповой политики позволяет делегировать ваши учетные данные целевому компьютеру. Или вы можете использовать обычную аутентификацию. Но для этого цель должна принимать незашифрованный трафик.

Команда сделать это удаленно, вероятно, будет выглядеть примерно так:

$session = new-PSSession "targetcomputer" -Authentication Basic -Credential  "Domain\domainadmin"
Invoke-Command -Session $session -scriptblock {Reset-Computermachinepassword -server "Domain\domainadmin"}
person Rugtert    schedule 22.01.2015
comment
Закрывать. Я получаю Cannot validate argument on parameter 'Session'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again. Я также заменил ваш -server "Domain\domainadmin" на -server "myserver.domain.com", но это все, что я сделал. Но это был хороший ответ, поскольку он объяснял, что вы не можете запустить команду на контроллере домена и ожидать, что она обновит затронутый сервер, не делая фокус-покус. - person vapcguy; 03.08.2017