PowerShell Script: Einzelnen Befehl als Admin ausführen
Hi zusammen,
gibt es eine Möglichkeit, einen einzelnen Command in einem PowerShell Script als Admin auszuführen?
Ich habe bereits eine Möglichkeit gefunden das ganze Skript auf Adminrechte anzuheben indem ich auf diese am Anfang prüfe und ggf. einen neuen Host mit Adminrechten starte und ihm mein Skript übergebe.
Allerdings müsste es doch bestimmt eine Möglichkeit geben, einen einzelnen Command auch als Admin auszuführen. Ich habe bereits von jemandem erfahren dies solle mit Invoke-Command möglich sein, da dieser Befehl wohl die höchstmöglichen Rechte von dem User einnimmt, mit dem man diesen startet.
So zumindest die Theorie, allerdings vermute ich, dass dies wohl nicht ganz stimmt, denn sonst würde es auch keinen Parameter -RunAsAdmin im Cmdlet Invoke-Command geben, oder?
Dieser Befehl führt lediglich zu einem Error: Der Dienst [...] kann nicht auf dem Computer . geöffnet werden.
Starte ich denselben jedoch auf einem Host mit Adminrechten, so funktioniert alles einwandfrei...
Dieser Befehl fordert mich auf, den Parameter -ContainerId mit anzugeben, von dem ich aber leider keine Ahnung habe und aus dem Helpfile nur hervorgeht: Specifies an array of container IDs. Im Netz habe ich dazu nicht wirklich etwas gefunden und habe es auch nicht wirklich weiter verfolgt, da ich nachgelesen hatte, dies hätte etwas mit Remote Ausführung auf einem Server zu tun.
gibt es eine Möglichkeit, einen einzelnen Command in einem PowerShell Script als Admin auszuführen?
Ich habe bereits eine Möglichkeit gefunden das ganze Skript auf Adminrechte anzuheben indem ich auf diese am Anfang prüfe und ggf. einen neuen Host mit Adminrechten starte und ihm mein Skript übergebe.
Allerdings müsste es doch bestimmt eine Möglichkeit geben, einen einzelnen Command auch als Admin auszuführen. Ich habe bereits von jemandem erfahren dies solle mit Invoke-Command möglich sein, da dieser Befehl wohl die höchstmöglichen Rechte von dem User einnimmt, mit dem man diesen startet.
So zumindest die Theorie, allerdings vermute ich, dass dies wohl nicht ganz stimmt, denn sonst würde es auch keinen Parameter -RunAsAdmin im Cmdlet Invoke-Command geben, oder?
Invoke-Command -ScriptBlock {Stop-Service -Name w32Time -Force}
Dieser Befehl führt lediglich zu einem Error: Der Dienst [...] kann nicht auf dem Computer . geöffnet werden.
Starte ich denselben jedoch auf einem Host mit Adminrechten, so funktioniert alles einwandfrei...
Invoke-Command -ScriptBlock {Stop-Service -Name w32Time -Force} -RunAsAdmin
Dieser Befehl fordert mich auf, den Parameter -ContainerId mit anzugeben, von dem ich aber leider keine Ahnung habe und aus dem Helpfile nur hervorgeht: Specifies an array of container IDs. Im Netz habe ich dazu nicht wirklich etwas gefunden und habe es auch nicht wirklich weiter verfolgt, da ich nachgelesen hatte, dies hätte etwas mit Remote Ausführung auf einem Server zu tun.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4862253225
Url: https://administrator.de/forum/powershell-script-einzelnen-befehl-als-admin-ausfuehren-4862253225.html
Ausgedruckt am: 15.01.2025 um 06:01 Uhr
5 Kommentare
Neuester Kommentar
Moin.
Start-Process erledigt das für dich mit dem Parameter "-verb runas" wenn der User selbst schon Admin ist:
bzw. wenn der User der aktuellen Instanz selbst kein Admin ist dann halt verschachtelt mit Credential-Angabe aufgerufen
Gruß S.
Start-Process erledigt das für dich mit dem Parameter "-verb runas" wenn der User selbst schon Admin ist:
start-process powershell -ArgumentList '-EP Bypass',"-C `"Stop-Service -Name w32Time -Force`"" -verb runas
start-process powershell -ArgumentList '-EP Bypass',"-C `"start-process powershell -verb runas -Argumentlist '-C Stop-Service -Name w32Time -Force'`"" -Credential (Get-Credential)
Moin,
wenn die Konsole nicht schon als Admin gestartet wurde, benötigst du immer eine neue Instanz.
um die Ausführung in der aktuellen Instanz zu prüfen, benötigst du zusätzlich den PassThru-Parameter, z.B. so:
Gruß Thomas
wenn die Konsole nicht schon als Admin gestartet wurde, benötigst du immer eine neue Instanz.
Start -Verb RunAs powershell -ArgumentList "stop-service -Name w32Time -force"
um die Ausführung in der aktuellen Instanz zu prüfen, benötigst du zusätzlich den PassThru-Parameter, z.B. so:
$Process = Start -PassThru -Verb RunAs powershell -ArgumentList "stop-service -Name w32Time -force"
$Process.WaitForExit()
if ($Process.ExitCode) {write-host -f red "Fehler"} else {write-host -f green "w32Time wurde erfolgreich beendet. "
Gruß Thomas
Moin,
-RunAsAdministrator wird in Verbindung mit -ContainerID für Windows Server Container verwendet.
Wie schlepper schreibt, kannst du mit Start-Process einen Teil deines Skriptes als Admin ausführen.
-RunAsAdministrator wird in Verbindung mit -ContainerID für Windows Server Container verwendet.
Wie schlepper schreibt, kannst du mit Start-Process einen Teil deines Skriptes als Admin ausführen.
Zum Glück ist dem nicht so. Sonst könnte ja jeder Schadcode, der nur mit eingeschränkten Rechten gestartet wurde, automatisch immer die höchsten Rechte des Users annehmen.
Gruß Thomas
Gruß Thomas