2016-05-18 6 views
1

Arbeiten in ein paar verschiedenen Domänen, die unterschiedliche Namensschema haben. Also schreibe ich ein Skript, das in jede Domäne geht und prüft ihre Gruppenzugehörigkeit.Get-ADPrincipalGroupMembership -Identity akzeptiert keine Variable

Als Erstes fragt das Skript nach dem Nachnamen des Benutzers. Dann verwende ich Get-ADUser, um das samaccountname auszuwählen und es an eine Variable zu binden (samaccountname ist der einzige Name, den Get-ADPrincipalGroupMembership -Identity Parameter akzeptiert).

Aber wenn ich das Skript mit der Variablen -Identity ausführen, findet es den Benutzer nicht. Wenn ich es manuell eintippe - es findet den Benutzer.

Hier ist der Code:

$surname = Read-Host "Users Last Name" 

$fullname = Get-ADUser -filter * | Where-Object {$_.surname -eq $surname} | 
      select samaccountname | Format-Table -HideTableHeaders | Out-String 
Get-ADPrincipalGroupMembership -Identity $fullname | select name | 
    Format-Table -HideTableHeaders 

Der Fehler ich zeigt, dass die Variable ein String ist, und es ist der richtige Benutzer, dass es für ist die Suche, aber der Fehler sagt es nicht, dass Benutzer finden.

Antwort

2

Format-* Cmdlets wurden zum Anzeigen von Daten für einen Benutzer erstellt. Verwenden Sie sie nicht, wenn die weitere Verarbeitung der Daten erforderlich/beabsichtigt ist.

ändern

... | select samaccountname | Format-Table -HideTableHeaders | Out-String 

zu

... | select -Expand samaccountname -First 1 

und Ihr Problem verschwindet.

+0

Ich dachte, es hatte mit der Ausgabe dieser ersten Variable zu tun. Weil, als ich es ansah, war .length - die Variable war viel länger als der Name des Benutzers, also dachte ich, dass dort einige hinzugefügte Räume waren. Vielen Dank. –

Verwandte Themen