it-swarm.com.de

Ermitteln Sie, ob PowerShell als Administrator ausgeführt wird

Wie kann ich in meinen Skripten feststellen, ob PowerShell mit Administratorrechten ausgeführt wird?

Ich muss wissen, weil ich versuche, ein Programm auszuführen, das das Öffnen geschützter Ports erfordert.

31
Boomerang
[bool](([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match "S-1-5-32-544")

Aufteilen, was dies bewirkt:

  • [bool] - Wandelt das Endergebnis in eine bool um.
  • [System.Security.Principal.WindowsIdentity]::GetCurrent() - Ruft die WindowsIdentity für den aktuell ausgeführten Benutzer ab.
  • (...).groups - Rufen Sie die Eigenschaft groups der Identität auf, um herauszufinden, zu welchen Benutzergruppen die Identität gehört.
  • -match "S-1-5-32-544" prüft, ob groups die bekannte SID der Administratorengruppe enthält. Die Identität enthält sie nur, wenn "Als Administrator ausführen" verwendet wurde.
38
RMazi
([Security.Principal.WindowsPrincipal] `
  [Security.Principal.WindowsIdentity]::GetCurrent() `
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

Dies ruft die aktuelle Windows-Identität ab und gibt True zurück, wenn die aktuelle Identität die Administratorrolle hat (d. H. Erhöht ausgeführt wird).

51
Bill_Stewart

In Powershell 4.0 können Sie erfordert am oberen Rand Ihres Skripts:

#Requires -RunAsAdministrator

Ausgänge:

Das Skript 'MyScript.ps1' kann nicht ausgeführt werden, da es die Anweisung "#requires" enthält, um als Administrator ausgeführt zu werden. Die aktuelle Windows PowerShell-Sitzung wird nicht als Administrator ausgeführt. Starten Sie Windows PowerShell mit der Option Als Administrator ausführen, und führen Sie das Skript erneut aus.

41
eddiegroves