2016-06-07 1 views
1

In der Schule müssen wir Netzlaufwerke mit PowerShell zuordnen. Diese Laufwerke sollten basierend auf der Gruppenmitgliedschaft zugeordnet werden. Mein Powershell-Skript sieht wie folgt aus:Powershell-Gruppe Vererbungseffekt

Add-Type -AssemblyName System.DirectoryServices.AccountManagement 
$groupdomain = [System.DirectoryServices.AccountManagement.ContextType]::Domain 
$user = [System.DirectoryServices.AccountManagement.UserPrincipal]::Current 
$GroupName = "year1" 
$group = [System.DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($groupdomain,$GroupName) 
if($user.IsMemberOf($group)) 
{ 
    net use S: \\dc\studentinfo\1ABHIT 
} 

ich etwas geschrieben habe, sehr ähnlich, nur mit dem Benutzer zu der Gruppe 1AHIT direkt hinzugefügt werden. In diesem Fall wird der Benutzer durch Gruppenverschachtelung in die Gruppe "Jahr1" eingefügt (Gruppenstruktur: user --> 1AHIT --> year1).

Das Skript funktioniert durch Überprüfung, ob der Benutzer Mitglied der Gruppe ist 1AHIT, die die Gruppe ist es "manuell" hinzugefügt wurde.

Es funktioniert nicht mit der Prüfung für die verschachtelte Gruppe. Nach dem Debuggen des Codes erfuhr ich, dass das Objekt $group das Objekt der Gruppe year1 ist, das if($user.IsMemberOf($group)) gibt false zurück.

Antwort

0

.NET 3.5 zur Rettung mit UserPrincipal.GetAuthorizationGroups.

if ($user.GetAuthorizationGroups() -contains $group) 
{ 
    net use S: \\dc\studentinfo\1ABHIT 
} 

nicht direkt, aber immer noch nützlich: es auch möglich ist, dies mit LDAP direkt zu tun, siehe this question.

+0

Muss ich .NET 3.5 dann auf der gesamten Domäne installieren? Oder ist es auf Windows 8.1 oder höher installiert? Vielen Dank für Ihre Hilfe –

+0

.NET 3.5 * oder höher * muss nur auf dem Computer installiert werden, auf dem Sie das ausführen. Windows 8.1 ist mit .NET 4.5 vorinstalliert, also kein Problem. –

+0

Vielen Dank! Du hast mich wahrscheinlich vor schlechten Noten gerettet: D –