PowerShell Befehl soll nur als Admin ausführbar sein?
Wie gebe ich einem Befehl mit das dieser nur als Admin ausgeführt werden kann und soll?
3 Antworten
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
https://www.google.com/search?q=powershell+administratorrechte+pr%C3%BCfen
Das Script sollte an einem Ort gespeichert sein, wo es nur von Administratoren geändert werden kann
Wenn man Sicherheit benötigt, muss das Script sich an einem Ort befinden, den nur Administratoren lesen können.
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.
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!"
}