Ejecutar RSAT Tools como otro usuario usando Powershell

Ejecutar RSAT Tools como otro usuario usando Powershell

Lo que intento lograr es ejecutar algunas herramientas RSAT desde un Powershell-Script como otro usuario (Dominio-Administrador).

Aquí está mi código de ejecución:

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

Y lo que recibo es un error que dice: este comando sólo se puede iniciar con privilegios elevados. Eso me dice que tuve que ejecutar el script usando un usuario administrador debido a las limitaciones de UAC, que no es exactamente lo que intento lograr.

¿Alguien tiene alguna aportación que pueda ayudarme?

¡Gracias!

EDITAR

Para que quede más claro adjunto el guión 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)
    }
}

Respuesta1

Esto puede reducirse a dos problemas:

  • En realidad, la herramienta necesita ejecutarse elevada, porque de lo contrario no se le permite realizar los cambios que necesita. Este suele ser el caso cuando ejecuta la herramienta en la máquina localmente y realiza cambios específicos para esa máquina. En ese caso, debe elevar la consola antes de ejecutar el comando. Esto se puede hacer directamente desde 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
    

Fuente aquí.

  • La herramienta está configurada incorrectamente y solo ejecutarla como el usuario adecuado sería suficiente para realizar los cambios que necesita. Este suele ser el caso cuando la herramienta administra el servidor remoto. En ese caso, puede modificar cómo se inicia el comando (asAdmin, asInvoke, asHighest) utilizando el kit de herramientas de compatibilidad de aplicaciones (descargar) y aplicando la corrección RunAsInvoker al ejecutable.
    • Abra el administrador de compatibilidad
    • crear una nueva solución en la base de datos actual
    • establecer la ruta al ejecutable
    • de la lista de correcciones seleccione RunAsInvoker, haga clic en preferencias y en el módulo editBox escriba * y haga clic en agregar
    • guarde la base de datos e instálela haciendo clic derecho

Lamentablemente, esto no funcionará para MMC.

Respuesta2

puedes cambiarlo para que se ejecute con:

saps “cmd” -directorio de trabajo $PSHOME -Credencial $SU -ArgumentList “/c dsa.msc”

información relacionada