PowerShell, можно ли перевести SID на ntaccount, если вы не являетесь частью домена? - PullRequest
3 голосов
/ 05 октября 2010

У меня есть этот код PowerShell.

$securityidentifier = new-object security.principal.securityidentifier $sid
$user = ( $securityidentifier.translate( [security.principal.ntaccount] ) )

Этот код работает только на компьютере, который находится в том же домене, что и пользователь, чей SID я бы хотел перевести на ntaccount.

Можно ли перевести SID на ntaccount, если вы не являетесь частью домена, но у вас есть имя пользователя и пароль для этого домена?

Все та же ошибка.

Exception calling "Translate" with "1" argument(s): "Some or all identity references could not be translated." At C:\...\test.ps1:7 char:40 + $user = ( $securityidentifier.translate <<<< ( [security.principal.ntaccount] ) ) + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException

Ответы [ 2 ]

0 голосов
/ 07 октября 2010

Поскольку вы не находитесь в домене, ваша машина не знает, кто (какой контроллер домена) должен запросить разрешение этого SID. Похоже, что нет параметра сервера для метода Translatename.

Если вы прибегаете к WinApi, это возможно: используйте API LookupAccountSid (укажите контроллер домена для параметра lpSystemName ).

0 голосов
/ 06 октября 2010

Вы пробовали, скажем, сопоставить диск с контроллером домена, который бы эффективно кэшировал учетные данные для пользователя домена? Это может затем разрешить доступ для перевода SID. Я не пробовал этого раньше, но стоит попробовать.

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