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 die Fähigkeit erfordert, geschützte Ports zu öffnen.
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 die Fähigkeit erfordert, geschützte Ports zu öffnen.
Antworten:
[bool](([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match "S-1-5-32-544")
Aufteilen, was dies bewirkt:
[bool]- Wirf das Endergebnis auf a bool.[System.Security.Principal.WindowsIdentity]::GetCurrent()- Ruft das WindowsIdentityfür den aktuell ausgeführten Benutzer ab.(...).groups- Rufen Sie die groupsEigenschaft der Identität auf, um herauszufinden, zu welchen Benutzergruppen die Identität gehört.-match "S-1-5-32-544"Überprüft, ob groupsdie bekannte SID der Administratorgruppe enthalten ist. Die Identität enthält sie nur, wenn "Als Administrator ausführen" verwendet wurde.-matchund zu [Security.Principal.WindowsIdentity]::GetCurrent().Groups -contains 'S-1-5-32-544'
([Security.Principal.WindowsPrincipal] `
[Security.Principal.WindowsIdentity]::GetCurrent() `
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
Dadurch wird die aktuelle Windows-Identität abgerufen und True zurückgegeben, wenn die aktuelle Identität die Administratorrolle hat (dh mit erhöhten Rechten ausgeführt wird).
In Powershell 4.0 können Sie verwenden , erfordert am Anfang des 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.
returnwenn der Benutzer nicht admin ist :)
#Requires -RunAsAdministratorist das nützlich: Es verhindert, dass das gesamte Skript ausgeführt wird, wenn Sie nicht über einen erhöhten Status verfügen.