Executando o RSAT Tools como outro usuário usando o Powershell

0

O que eu tento realizar é executar algumas ferramentas do RSAT de um Powershell-Script como outro usuário (Domain-Admin).

Aqui está o meu código de execução:

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

E o que eu recebo é um erro que diz: este comando só pode ser iniciado com privilégios elevados. Agora, isso me diz que eu tive que executar o script usando um usuário admin, por causa das limitações do UAC, o que não é exatamente o que tento realizar.

Alguém tem alguma contribuição para mim?

Obrigado!

EDITAR

Para deixar mais claro, anexei o roteiro inteiro.

$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)
    }
}
    
por Langhard 05.12.2013 / 07:42

1 resposta

1

Isso pode se resumir a dois problemas:

  • Na verdade, a ferramenta precisa ser executada de forma elevada, porque, caso contrário, não será permitido fazer as alterações necessárias. Esse geralmente é o caso quando você executa a ferramenta na máquina localmente e faz alterações específicas nessa máquina. Nesse caso, você precisa elevar o console antes de executar o comando. Isso pode ser feito diretamente do powershell usando:

    $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
    

Fonte aqui.

  • A ferramenta está configurada incorretamente e só é executada como o usuário apropriado, o que seria suficiente para fazer as alterações necessárias. Esse é geralmente o caso ao gerenciar o servidor remoto pela ferramenta. Nesse caso, você pode modificar como o comando é iniciado (asAdmin, asInvoke, asHighest) usando o kit de ferramentas de compatibilidade de aplicativo ( download ) e aplicando a correção RunAsInvoker ao executável.
    • Abra o administrador de compatibilidade
    • cria uma nova correção no banco de dados atual
    • define o caminho para o executável
    • da lista de correções selecione RunAsInvoker, clique em preferências e no módulo editBox type * e clique em add
    • salve o banco de dados e instale-o clicando com o botão direito

Infelizmente isso não funcionará para o MMC.

    
por 05.12.2013 / 13:21