instinctless
Goto Top

Powershell Befehl (nicht Script) als Admin ausführen, wie geht das?

Hallo,
ich würde gerne einen wmi befehl im ISE ausführen. Für diesen benötige ich admin Rechte. Nun will ich nicht jedes Mal das ISE vorher als Admin starten, sondern möchte den WMI Befehl in einer ps1 Datei ablegen.

Mit
Start-Process Powershell -Verb runAs
kann ich ja eine PS Shell im Admin Kontext starten aber wie übergebe ich gleizeitig meinen WMI Befehl
Get-WmiObject win32_product -Computername foo
?

Ich möchte also in einer einzigen ps1 datei die Ausführung der WMI Abfrage mit erhöhten Rechten. Kann mir jemand sagen, wie das geht?

Content-ID: 1401991146

Url: https://administrator.de/forum/powershell-befehl-nicht-script-als-admin-ausfuehren-wie-geht-das-1401991146.html

Ausgedruckt am: 22.12.2024 um 12:12 Uhr

Tezzla
Tezzla 18.10.2021 um 14:04:18 Uhr
Goto Top
Hello!

If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] “Administrator”))
{
    Start-Process powershell -Verb runAs | whoami
}

So z.B.
Geht aber bestimmt eleganter..
149569
149569 18.10.2021 aktualisiert um 14:33:41 Uhr
Goto Top
if(!(new-object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole(544)){
    start powershell -Verb runas -ArgumentList '-File',$MyInvocation.MyCommand.Definition  
    exit
}
# everything what is listed after this comment runs elevated ...
Doskias
Lösung Doskias 18.10.2021 um 14:39:03 Uhr
Goto Top
Moin,

du bist schon dicht dran:

start-process powershell.exe -ArgumentList '"Get-WmiObject win32_product -Computername foo";"sleep 10"' -verb runas  

theoretisch ginge auch:
start-process powershell.exe -ArgumentList "Get-WmiObject win32_product -Computername foo" -verb runas  
aber dann läuft der Befehl durch und das PS-Fenster schließt sich direkt. Mit sleep 10 kommt im Anschluss noch ein 10-Sekündiger Wartebefehl bis das fesnter sich schließt. Alternativ anstatt dem sleep 10 ein pause und es wartet bis zum Tastendruck.

Gruß
Doskias
instinctless
instinctless 18.10.2021 um 15:56:27 Uhr
Goto Top
Die beiden Befehle mit dem SecurityPrincipal funktionieren bei mir leider nicht. Nach der Eingabe der Credentials, geht für einen Bruchteil einer Sekunde das PS Fenster auf und wieder zu. Auch wenn ich an den Befehl Pause hinten anhänge.
Die Lösung von Doskias funktioniert aber.
Vielen Dank dafür
149569
149569 18.10.2021 aktualisiert um 16:39:38 Uhr
Goto Top
Zitat von @instinctless:

Die beiden Befehle mit dem SecurityPrincipal funktionieren bei mir leider nicht.
Sicher läuft das, die sind dafür da wenn man für das gesamte Skript elevated Rights benötigt, also alles was nach meinem Kommentar in der letzten Zeile an Befehlen steht wird dann elevated ausgeführt, weil sich das Skript selbst neu elevated startet wenn es das nicht schon ist😉