Запуск RSAT Tools от имени другого пользователя с использованием Powershell
Что я пытаюсь сделать, так это запустить некоторые инструменты 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)
}
}
2 ответа
Это может сводиться к двум проблемам:
Инструмент на самом деле должен работать с повышенными правами, потому что в противном случае ему не разрешено вносить необходимые изменения. Это обычно тот случай, когда вы запускаете инструмент на станке локально и вносите изменения, характерные для этого станка. В этом случае вам нужно поднять консоль, прежде чем запускать команду. Это можно сделать напрямую из 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.
вы можете изменить его для запуска с:
saps «cmd» - рабочий каталог $PSHOME -Credential $SU -ArgumentList «/c dsa.msc»