Powershell Get-ADUser aus Array
Hallo zusammen,
ich habe folgende Befehle:
Dieser Befehl gibt mir den Vorgesetzten eines Users als String aus.
Nun habe ich zwei Arrays, $User und $Manager, in $User stehen Usernamen, der Array $Manager ist leer und ich möchte den $User Array durchgehen, abfragen und die Antwort in $Manager schreiben.
Vorgestellt hatte ich es mir wie folgt:
Oder:
Will aber alles nicht funktionieren
Habt ihr vielleicht eine Idee?
PS: Ich hatte vorher mal diesen Befehl:
Der gibt mir allerdings ein Objekt und kein String zurück. Ich benötige die Ausgabe aber als String.
VG
lele
ich habe folgende Befehle:
$a = Get-Aduser -Identity //Username// -properties *
$b=Get-ADUser($a.Manager)
$b.Name
//Nachname, Vorname//
Dieser Befehl gibt mir den Vorgesetzten eines Users als String aus.
Nun habe ich zwei Arrays, $User und $Manager, in $User stehen Usernamen, der Array $Manager ist leer und ich möchte den $User Array durchgehen, abfragen und die Antwort in $Manager schreiben.
Vorgestellt hatte ich es mir wie folgt:
$User = $User | Get-ADUser -Properties *
$b = Get-ADUser($User.Manager)
$Manger = $b.Name
Oder:
foreach{ $Manager in $User)
{
$User = $User | Get-ADUser -Properties *
$Manager = Get-ADUser($User.Manager)
$Manger = $Manager.Name
}
Will aber alles nicht funktionieren
Habt ihr vielleicht eine Idee?
PS: Ich hatte vorher mal diesen Befehl:
$Manager = $User | Get-ADUser -Properties * -ErrorAction SilentlyContinue | select manager
VG
lele
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 611150
Url: https://administrator.de/contentid/611150
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
8 Kommentare
Neuester Kommentar
Prima. Sieht gut aus!
Klare Angaben, klare Fragen. Dann kannst Du auch Hilfe erwarten.
PS:
Ich will mal nicht so sein.
Was passiert denn, wenn Du ausnahmsweise mal meinen o.g. Code 1:1 ausführst?
bekomm ich 20.000+ Fehlerzeilen.
Hm... Weil ein Fehler drin ist?Mein $User Array ist zwar befüllt, trotzdem frägt der Befehl alle Einträge im AD ab.
Ja, ja. Fangeball.Um den Befehl besser verstehen zu können, kannst du mir erklären was das "%" in Zeile 3 macht? Ich habe dazu nichts in meinem dicken "Windows PowerShell Cookbook" gefunden.
Unwahrscheinlich!Klare Angaben, klare Fragen. Dann kannst Du auch Hilfe erwarten.
PS:
Ich will mal nicht so sein.
Was passiert denn, wenn Du ausnahmsweise mal meinen o.g. Code 1:1 ausführst?
Hallo,
emeriks Code liefert keinen Array mit Manager, sondern eine HashTable, bei der der User der Key ist und der Manager der Wert.
Hier liegt wohl auch der Fehler für "Der Wert "User" kann nicht in den Typ "System.Int32" konvertiert werden.". Ich könnte fast wetten, bei dir steht "$Manager=@()". Da hat Emeriks etwas anderes.
Mit
sollte dir dann
einen Array liefern, und
einen String.
Ich würde das noch etwas Optimieren. So wie es da steht, hast du die Manager ggf Mehrfach enthalten. Aus dem "select manager" sollte man ein "select manager -unique" machen. Und am besten auch gleich nur die finden, die einen Manager gesetzt haben. Und gaaanz wichtig: nicht alle Properties abfragen, sondern nur das eine benötigte.
Ungetestet.
Grüße
Filipp
emeriks Code liefert keinen Array mit Manager, sondern eine HashTable, bei der der User der Key ist und der Manager der Wert.
Hier liegt wohl auch der Fehler für "Der Wert "User" kann nicht in den Typ "System.Int32" konvertiert werden.". Ich könnte fast wetten, bei dir steht "$Manager=@()". Da hat Emeriks etwas anderes.
PS: Ich hatte vorher mal diesen Befehl:
$Manager = $User | Get-ADUser -Properties * -ErrorAction SilentlyContinue | select manager
Der gibt mir allerdings ein Objekt und kein String zurück. Ich benötige die Ausgabe aber als String.
Was willst du denn jetzt? Einen Array oder einen String? Aber wenn das dein einziges Problem ist, und der Befehl sonst funktioniert:$Manager = $User | Get-ADUser -Properties * -ErrorAction SilentlyContinue | select manager
Der gibt mir allerdings ein Objekt und kein String zurück. Ich benötige die Ausgabe aber als String.
Mit
$Manager = $User | Get-ADUser -Properties * -ErrorAction SilentlyContinue | select manager
$Manager.manager
$Manager.manager -join ", "
Ich würde das noch etwas Optimieren. So wie es da steht, hast du die Manager ggf Mehrfach enthalten. Aus dem "select manager" sollte man ein "select manager -unique" machen. Und am besten auch gleich nur die finden, die einen Manager gesetzt haben. Und gaaanz wichtig: nicht alle Properties abfragen, sondern nur das eine benötigte.
$Manager = $User | %{Get-ADUser -Filter "manager -like '*' -and Name -eq '$_'" -Properties manager -ErrorAction SilentlyContinue} | select manager -unique
Grüße
Filipp
@filippg
Dann hat er eine Liste von Managern, weiß aber nicht, wer wessen ist.
Dann hat er eine Liste von Managern, weiß aber nicht, wer wessen ist.
@emeriks: das ist mir sehr wohl bewusst. Aber die Problemstellung ist so offen formuliert, dass ich das als Fragestellung verstanden habe
However, lele scheint das Interesse verloren zu haben & hält es nicht für nötig, zu antworten.
However, lele scheint das Interesse verloren zu haben & hält es nicht für nötig, zu antworten.