2014-02-05 9 views
5

Der Benutzer ist Mitglied der AD-Sicherheitsgruppe "Domäne \ SQL-Admins" und die Sicherheitsgruppe "Domäne \ SQL-Admins" ist ein Mitglied der local Administratoren Gruppe auf einem Windows Server.Überprüfen Sie, ob der Benutzer Mitglied der lokalen Administratorgruppe auf einem Remote-Server ist

Ich habe den folgenden Powershell-Skript versucht:

$u = "Username"; net localgroup administrators | Where {$_ -match $u} 

Dieses Skript wird nur den Benutzer zurück, wenn es direkt an die Admin-Gruppe hinzugefügt wird. Muss ich alle Gruppen in der Admin-Gruppe durchlaufen, bis ich meinen Benutzer finde? Oder gibt es einen anderen Weg?

Antwort

9

Lesen Sie diesen Artikel von Boe Prox auf dem Microsoft Hey Scripting Guy Blog. Er beschreibt, wie überprüft werden kann, ob der Benutzer ein lokaler Administrator ist oder nicht.

http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/11/check-for-admin-credentials-in-a-powershell-script.aspx

Dieser Artikel verweist auf eine Test-IsAdmin-Funktion, die auf der TechNet Gallery geschrieben wurde.

http://gallery.technet.microsoft.com/scriptcenter/1b5df952-9e10-470f-ad7c-dc2bdc2ac946

Die Funktion enthält den folgenden Code, der $true oder $false zurückgibt.

([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") 
+1

Das war super danke! – ReeReeBosley

0

Wenn Sie passieren die PowerShell Community Extension zu verwenden, können Sie den Test-UserGroupMembership Befehl zB verwenden:

Test-UserGroupMembership Administrators 
1

die SID verwenden:

([Security.Principal.WindowsIdentity]::GetCurrent().Groups | Select-String 'S-1-5-32-544') 

oder eine "bekannte" Sicherheit durch Bezeichner Name:

([Security.Principal.WindowsIdentity]::GetCurrent().Groups.IsWellKnown('BuiltinAdministratorsSid') -eq $true) 

, wenn Sie alle SIDs und ihre Namen erhalten möchten, überprüfen Sie bitte diese Seite: https://support.microsoft.com/en-us/help/243330/well-known-security-identifiers-in-windows-operating-systems

0

Powershell 5.1 (Windows Server 2016) enthält Get-LocalGroupMember Cmdlets.

$user = "$env:COMPUTERNAME\$env:USERNAME" 
$group = 'Administrators' 
$isInGroup = (Get-LocalGroupMember $group).Name -contains $user 
Verwandte Themen