Ausführen von RSAT Tools als anderer Benutzer mithilfe von Powershell

Ausführen von RSAT Tools als anderer Benutzer mithilfe von Powershell

Ich versuche, einige RSAT-Tools aus einem Powershell-Skript als ein anderer Benutzer (Domänenadministrator) auszuführen.

Hier ist mein Laufcode:

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

Und was ich bekomme, ist eine Fehlermeldung, die besagt: Dieser Befehl kann nur mit erhöhten Rechten ausgeführt werden. Das bedeutet, dass ich das Skript aufgrund von UAC-Einschränkungen als Administrator ausführen musste, was genau nicht das ist, was ich erreichen möchte.

Hat jemand einen hilfreichen Beitrag für mich?

Danke!

BEARBEITEN

Zur Verdeutlichung habe ich das gesamte Skript angehängt.

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

Antwort1

Dies kann auf zwei Probleme hinauslaufen:

  • Das Tool muss tatsächlich mit erhöhten Rechten ausgeführt werden, da es sonst die erforderlichen Änderungen nicht durchführen darf. Dies ist normalerweise der Fall, wenn Sie das Tool lokal auf dem Computer ausführen und Änderungen vornehmen, die für diesen Computer spezifisch sind. In diesem Fall müssen Sie die Konsole erhöhen, bevor Sie den Befehl ausführen. Dies kann direkt von Powershell aus mit folgendem Befehl erfolgen:

    $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
    

Quelle hier.

  • Das Tool ist falsch konfiguriert und nur die Ausführung als entsprechender Benutzer würde ausreichen, um die erforderlichen Änderungen vorzunehmen. Dies ist normalerweise der Fall, wenn Remote-Server mit dem Tool verwaltet werden. In diesem Fall können Sie mithilfe des Anwendungskompatibilitäts-Toolkits () ändern, wie der Befehl gestartet wird (asAdmin, asInvoke, asHighest).herunterladen) und Anwenden des RunAsInvoker-Fix auf die ausführbare Datei.
    • Öffnen Sie den Kompatibilitätsadministrator
    • neuen Fix in der aktuellen Datenbank erstellen
    • Legen Sie den Pfad zur ausführbaren Datei fest
    • Wählen Sie aus der Liste der Fixes RunAsInvoker aus, klicken Sie auf Einstellungen und geben Sie in der Modul-Editierbox * ein und klicken Sie auf Hinzufügen
    • Speichern Sie die Datenbank und installieren Sie sie mit einem Rechtsklick

Leider funktioniert dies nicht für MMC.

Antwort2

Sie können es so ändern, dass es mit Folgendem ausgeführt wird:

saps „cmd“ -workingdirectory $PSHOME -Credential $SU -ArgumentList „/c dsa.msc“

verwandte Informationen