2016-03-31 10 views
0

Ich versuche, den Vor- und Nachnamen eines Benutzers mithilfe von PowerShell aus AD zu ziehen.PowerShell - Rückgabewert von AD Vor- und Nachname des Benutzers

Die Befehle:

$GivenName = Get-ADUser -Identity $User | select GivenName 
Write-Host $GivenName 

einen Wert von zurückgibt: @{GivenName=Bruce} Ich habe dann versucht, nur den Teil der Zeichenfolge nach unten zu reduzieren i mit den folgenden Befehlen müssen:

$First = $GivenName.Replace("@{GivenName=","") 
$First = $First.Replace("}","") 

Dieser Streifen soll weg alle außer der Schnur 'Bruce'

Stattdessen erhalte ich diesen folgenden Fehler:

Method invocation failed because [Selected.Microsoft.ActiveDirectory.Management.ADUser] does not contain a method named 'Replace'. 
At C:\Users\john.ring\Documents\Scripts\UpdateADUsers.ps1:10 char:5 
+  $First = $GivenName.Replace("@{GivenName=","") 
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (Replace:String) [], RuntimeException 
    + FullyQualifiedErrorId : MethodNotFound 

Mein Google-Fu hat keine Lösung gefunden. Irgendein Vorschlag, wie man den Fehler oder eine bessere Weise korrigiert, den Vornamen des Benutzers zu ziehen, würde sehr geschätzt.

+0

'Select -Expand GivenName' –

+0

Dank Mathias! Das macht genau das, wonach ich gesucht habe! –

Antwort

0

Wenn Sie Objekte an Select-Object [propertyname(s)] übergeben, erstellt das Cmdlet Select-Object ein neues Objekt mit den Eigenschaften des von Ihnen angegebenen Eingabeobjekts. Dieses Objekt wird wiederum in @{PropertyName1=PropertyValue1[;PropertyNameN=PropertyValue2]} gerendert, wenn es in eine Zeichenfolge konvertiert wird.

Um den Wert einer einzigen Eigenschaft zu greifen, und sonst nichts, verwenden Sie den -ExpandProperty Parameter:

$GivenName = Get-ADUser -Identity $user |Select-Object -ExpandProperty GivenName 

Da Sie mehrere Objekte aus dem gleichen Benutzer benötigen, speichern Sie besser die den Benutzer in einer Variablen und verwenden Sie die . Dereferenzierungsoperator Zugriff auf die GivenName und Surname Eigenschaften:

$UserObject = Get-ADUser -Identity $user 
$GivenName = $UserObject.GivenName 
$Surname = $UserObject.Surname 
0

GivenName ist ein Benutzerobjektattribut in Active Directory. Sie speichern die Ergebnisse Ihrer Abfrage in einem PowerShell-Objekt mit der Bezeichnung $GivenName. Die beiden sind jedoch nicht identisch. Um auf den angegebenen Namen des Benutzers Bezug zu nehmen, müssen Sie auf die Eigenschaft GivenName des PowerShell-Objekts verweisen. $GivenName.GivenName ist was du suchst.

Es kann weniger verwirrend sein, wenn Sie die Ergebnisse Ihrer AD-Abfrage stattdessen in einem Objekt mit dem Namen $User speichern, sodass $User.GivenName so lautet, wie Sie auf die angegebene Namenseigenschaft verweisen würden.

Verwandte Themen