O que tento realizar é executar algumas ferramentas RSAT a partir de um script Powershell como outro usuário (administrador de domínio).
Aqui está 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 recebo é um erro que diz: este comando só pode ser iniciado com privilégios elevados. Agora, isso me diz que tive que executar o script usando um usuário administrador devido às limitações do UAC, o que não é exatamente o que tento realizar.
Alguém tem uma contribuição de ajuda para mim?
Obrigado!
EDITAR
Para deixar mais claro anexei o script completo.
$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)
}
}
Responder1
Isso pode se resumir a dois problemas:
A ferramenta realmente precisa ser executada de forma elevada, caso contrário ela não terá permissão para fazer as alterações necessárias. Geralmente, esse é o caso quando você executa a ferramenta localmente na máquina e faz alterações específicas para essa 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
- A ferramenta está configurada incorretamente e apenas executando o usuário apropriado seria suficiente para fazer as alterações necessárias. Esse geralmente é o caso ao gerenciar servidores remotos pela ferramenta. Nesse caso, você pode modificar a forma como o comando é iniciado (asAdmin, asInvoke, asHighest) usando o kit de ferramentas de compatibilidade de aplicativos (download) e aplicando a correção RunAsInvoker ao executável.
- Abra o administrador de compatibilidade
- crie uma nova correção no banco de dados atual
- defina o caminho para o executável
- na lista de correções selecione RunAsInvoker, clique em preferências e no módulo editBox digite * e clique em adicionar
- salve o banco de dados e instale-o clicando com o botão direito
Infelizmente, isso não funcionará para MMC.
Responder2
você pode alterá-lo para funcionar com:
saps “cmd” -workingdirectory $PSHOME -Credential $SU -ArgumentList “/c dsa.msc”