Frage Wie kann ich in einem PowerShell-Skript prüfen, ob ich mit Administratorrechten arbeite?


Wie kann ich in einem PowerShell-Skript prüfen, ob ich mit Administratorrechten arbeite?


27
2017-12-17 19:30


Ursprung


Suchen Sie nach Admin-Anmeldeinformationen in einem PowerShell-Skript - KyleMit


Antworten:


$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
$currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

(von Sicherheits Tricks der Kommandozeile)


20
2017-12-17 20:15



$ currentPrincipal = Neu-Objekt Security.Principal.WindowsPrincipal ([Security.Principal.WindowsIdentity] :: GetCurrent ()) & {if ($ currentPrincipal.IsInRole ([Security.Principal.WindowsBuiltInRole] :: Administrator)) {(get- Host) .UI.RawUI.Backgroundcolor = "DarkRed" Clear-Host Write-Host "Warnung: PowerShell wird als Administrator ausgeführt.`n"} - davey
Erste Zeile: letzte schließende Klammer) fehlt. Ich kann es nicht beheben, da sich weniger als 6 Zeichen ändern. - Xavier Nicollet


In Powershell 4.0 können Sie verwenden erfordert ganz oben in deinem Skript:

#Requires -RunAsAdministrator

Ausgänge:

Das Skript 'MyScript.ps1' kann nicht ausgeführt werden, da es eine Anweisung "#requires" für enthält   läuft als Administrator. Die aktuelle Windows PowerShell-Sitzung wird nicht als Administrator ausgeführt. Starten Sie Windows   PowerShell mit der Option Als Administrator ausführen und versuchen Sie dann, das Skript erneut auszuführen.


32
2018-03-18 22:55



Nicht genau das, wonach ich suchte, aber immer noch sehr nützlich. Danke Eddie! - Michael Kelley


function Test-Administrator  
{  
    $user = [Security.Principal.WindowsIdentity]::GetCurrent();
    (New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)  
}

Führen Sie die obige Funktion aus. Wenn das Ergebnis wahr ist, hat der Benutzer Administratorrechte.


30
2017-12-27 20:56



Dies bestimmt nur, ob der Benutzer, der das Skript ausführt, ein Administrator auf dem Computer ist - und nicht, wenn das Skript gerade ausgeführt wird mit Administratorrechten ausgeführt. Mit anderen Worten: Dies wird auch dann true zurückgeben, wenn der Benutzer nicht "run as administrator" verwendet hat, um die Befehlsshell zu starten. - Holistic Developer
@HolisticDeveloper, das ist falsch. Wenn Sie nicht erhöht sind, wird false zurückgegeben - charleswj81
@ charleswj81 ab sofort beobachte ich das Verhalten, das Holistic Developer beschreibt. - zneak
Ich glaube nicht, dass du das Semikolon brauchst ... aber das sagte, ich denke nicht, dass es auch einen Fehler gibt - Kolob Canyon
Dies funktioniert bei Win10 ab 2018. Gibt False zurück, wenn das aktuelle Benutzerkonto nicht erhöht ist, gibt True zurück, wenn Powershell auf Hoch gesetzt ist. - arberg