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 WindowsIdentity
für den aktuell ausgeführten Benutzer ab.(...).groups
- Rufen Sie die groups
Eigenschaft der Identität auf, um herauszufinden, zu welchen Benutzergruppen die Identität gehört.-match "S-1-5-32-544"
Überprüft, ob groups
die bekannte SID der Administratorgruppe enthalten ist. Die Identität enthält sie nur, wenn "Als Administrator ausführen" verwendet wurde.-match
und 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.
return
wenn der Benutzer nicht admin ist :)
#Requires -RunAsAdministrator
ist das nützlich: Es verhindert, dass das gesamte Skript ausgeführt wird, wenn Sie nicht über einen erhöhten Status verfügen.