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

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

Я пытаюсь запустить некоторые инструменты RSAT из скрипта Powershell от имени другого пользователя (администратора домена).

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

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)
    }
}

решение1

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

  • Инструменту на самом деле нужно запустить повышенные права, потому что в противном случае ему не разрешается вносить необходимые изменения. Обычно это происходит, когда вы запускаете инструмент на локальной машине и вносите изменения, специфичные для этой машины. В этом случае вам нужно повысить права консоли перед запуском команды. Это можно сделать напрямую из 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.

решение2

Вы можете изменить его для запуска с помощью:

saps «cmd» -workingdirectory $PSHOME -Credential $SU -ArgumentList «/c dsa.msc»

Связанный контент