PowerShell Befehl soll nur als Admin ausführbar sein?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die beiden folgenden Scripte erfragen beim Start Adminrechte:

Dienst nach Vorschrift:

$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)|
  ?{!$_}|
  %{
    Start-Process powershell.exe -Verb RunAs -ArgumentList ('-executionpolicy bypass  -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
    exit $LASTEXITCODE
  }
#ab hier  alles, was als Admin laufen soll...
'ich laufe  als Admin'
pause

Die etwas legere Prüfung (eigentlich der Klassiker):

net.exe session >$Null 2>&1  #Der Befehl wirft ohne Adminrechte  den exitcode 5
if (!$?){
    Start-Process powershell.exe -Verb RunAs -ArgumentList ('-executionpolicy bypass -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
    exit $LASTEXITCODE
}
#ab hier  alles, was als Admin laufen soll...
'ich laufe  als Admin'
pause
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Als Workaround kann man in dem Skript eine Datei unter C:\Programme anlegen, auf dessen existenz prüfen und sie dann wieder löschen.
Das funktioniert nur als Admin.


Lenzer66u 
Fragesteller
 06.12.2022, 11:23

habe es mit diesem Befehl hinbekommen:

if (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) 

{

...

}

else

{

Write-Warning "Bitte Loggen sie sich als Admin ein!"

}

0