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/contentid/1401991146

Printed on: December 13, 2024 at 13:12 o'clock

Tezzla
Tezzla Oct 18, 2021 at 12:04:18 (UTC)
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 Oct 18, 2021 updated at 12:33:41 (UTC)
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
Solution Doskias Oct 18, 2021 at 12:39:03 (UTC)
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 Oct 18, 2021 at 13:56:27 (UTC)
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 Oct 18, 2021 updated at 14:39:38 (UTC)
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😉