emeriks
Goto Top

Powershell - Get-ADForest

Hi,
ich habe da im Powershell ein Verständnisproblem.

Ich möchte alle Domänen einer Gesamtstruktur durchlaufen, um dann damit irgendwas machen zu können.

Warum geht dies
$Domains = Get-ADForest
Foreach($Domain in $Domains.Domains) {Get-ADDomain $Domain}

aber dies nicht
Foreach($Domain in Get-ADForest.Domains) {Get-ADDomain $Domain}
Hier kommt:
Get-ADForest.Domains : Die Benennung "Get-ADForest.Domains" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:15
Foreach($D in Get-ADForest.Domains) {Get-ADDomain $D}
~~~~~~~~~~~~~~~~~~~~
CategoryInfo : ObjectNotFound: (Get-ADForest.Domains:String) , CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException

Wieso muss man das erst in einer Variable zwischenlagern?

Nebenbei:
Wie muss ich es schreiben, wenn ich die erste Variante als Einzeiler absetzen will? Mit einem Pipezeichen "|" gehts nicht.

E.

Content-ID: 330309

Url: https://administrator.de/forum/powershell-get-adforest-330309.html

Ausgedruckt am: 07.04.2025 um 00:04 Uhr

132272
Lösung 132272 23.02.2017 aktualisiert um 13:22:41 Uhr
Goto Top
Du musst Klammern um das CMDLet setzen damit du auf die Eigenschaften zugreifen kannst:
Foreach($Domain in (Get-ADForest).Domains) {
    Get-ADDomain $Domain
}


Einzeiler mit Foreach-Schleife (%{})
(Get-ADForest).Domains | Get-ADDomain
oder auch
Get-ADForest | select -Expand Domains | %{$_}
usw.

Gruß
emeriks
emeriks 23.02.2017 um 13:24:07 Uhr
Goto Top
Danke! So gehts.

Frage: Das mit dem "%" sehe ich gerade zum ersten Mal. Was drückt das aus? (Gerne auch einen Link zur Selbstlektüre)
132272
Lösung 132272 23.02.2017 aktualisiert um 13:26:18 Uhr
Goto Top
Das ist nur eine Abkürzung für das foreach-object, also quasi die Foreach-Schleife für die Pipeline.
Genauso wie ?{} für das Where-Object die Abkürzung ist.
emeriks
emeriks 23.02.2017 um 13:31:34 Uhr
Goto Top
Verstanden. Danke für die Erklärung!
AnkhMorpork
AnkhMorpork 23.02.2017 um 15:49:11 Uhr
Goto Top
<Klugscheiß-Mode>

War das nicht folgendermaßen:
% ist die Abkürzung für das cmdlet Foreach-Object. Foreach hingegen ist eine ordinäre Schleife.
Gemeinerweise ist Foreach aber ein Alias für Foreach-Object.

</Klugscheiß-Mode>
132272
132272 23.02.2017 aktualisiert um 15:51:52 Uhr
Goto Top
Rischtisch. Kriegscht a herzl face-wink