Запуск RSAT Tools от имени другого пользователя с использованием Powershell

2498
Langhard

Что я пытаюсь сделать, так это запустить некоторые инструменты RSAT из Powershell-Script от имени другого пользователя (Domain-Admin).

Вот мой код запуска:

Start-Process -FilePath "C:\Windows\system32\mmc.exe" -ArgumentList "C:\Windows\system32\gpmc.msc" -Credential (Get-Credential -Credential MYDOMAIN\myadminuser) 

И я получаю сообщение об ошибке: эту команду можно запускать только с повышенными привилегиями. Теперь это говорит мне о том, что мне пришлось запускать скрипт с использованием прав администратора из-за ограничений UAC, а это не совсем то, чего я пытаюсь достичь.

Кто-нибудь помогает мне?

Спасибо!

РЕДАКТИРОВАТЬ

Чтобы было понятнее, я приложил весь сценарий.

$title = "Windows 8.1 RSAT Tools" $message = "Verwaltungskonsole"  $ad = New-Object System.Management.Automation.Host.ChoiceDescription "&AD Verwaltung", ` "Active Directory-Benutzer und -Computer"  $gpo = New-Object System.Management.Automation.Host.ChoiceDescription "&GPO Verwaltung", ` "Gruppenrichtlinienverwaltung"  $options = [System.Management.Automation.Host.ChoiceDescription[]]($ad, $gpo)  $result = $host.ui.PromptForChoice($title, $message, $options, 0)   switch ($result) { 0  { Start-Process -Verb RunAs -FilePath "C:\windows\system32\mmc.exe" -ArgumentList "C:\windows\system32\dsa.msc" -Credential (Get-Credential -Credential MYDOMAIN\myadminuser) } 1  { Start-Process -Verb RunAs -FilePath "C:\windows\system32\mmc.exe" -ArgumentList "C:\windows\system32\gpmc.msc" -Credential (Get-Credential -Credential MYDOMAIN\myadminuser) } } 
0

1 ответ на вопрос

1
nohwnd

Это может сводиться к двум проблемам:

  • Инструмент на самом деле должен работать с повышенными правами, потому что в противном случае ему не разрешено вносить необходимые изменения. Обычно это происходит, когда вы запускаете инструмент на машине локально и вносите изменения, характерные для этой машины. В этом случае вам нужно поднять консоль перед запуском команды. Это можно сделать прямо из powershell, используя:

    $newProcess = New-Object System.Diagnostics.ProcessStartInfo "powershell"; #Indicate that the process should be elevated $newProcess.Verb = "runas"; #Start the new process [System.Diagnostics.Process]::Start($newProcess) | Out-Null 

Источник здесь.

  • Инструмент неправильно настроен и работает только в том случае, если соответствующий пользователь будет достаточно для внесения необходимых изменений. Это обычно имеет место при управлении удаленным сервером с помощью инструмента. В этом случае вы можете изменить способ запуска команды (asAdmin, asInvoke, asHighest), используя набор средств для обеспечения совместимости приложений ( загрузить ) и применив исправление RunAsInvoker к исполняемому файлу.
    • Откройте администратор совместимости
    • создать новое исправление в текущей базе данных
    • установить путь к исполняемому файлу
    • Из списка исправлений выберите RunAsInvoker, нажмите «Настройки» и в модуле editBox введите * и нажмите «Добавить».
    • сохранить базу данных и установить ее, щелкнув правой кнопкой мыши

К сожалению, это не будет работать для MMC.

Спасибо, nohwnd за ваш ответ! Тем временем я уже попробовал первую часть, но она не сработала. Я посмотрю на вторую часть вашего ответа и вернусь к нему! Langhard 10 лет назад 0
О каком инструменте мы говорим? nohwnd 10 лет назад 0
Инструментом является mmc.exe, и консоль, которую я пытаюсь открыть, является либо активным каталогом, либо консолью gpo. (dsa.msc / gpmc.msc). Кроме того, просто чтобы упомянуть, я могу запустить программу с помощью shift-rightclick, а затем без проблем ввести свои учетные данные domain-admins, но я хотел бы иметь скрипт powershell с меню для других пользователей-администраторов, где они могут выбрать нужную им консоль и получить запрос на учетные данные. Langhard 10 лет назад 0