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-Key: 330309

Url: https://administrator.de/contentid/330309

Printed on: April 24, 2024 at 04:04 o'clock

Mitglied: 132272
Solution 132272 Feb 23, 2017 updated at 12:22:41 (UTC)
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ß
Member: emeriks
emeriks Feb 23, 2017 at 12:24:07 (UTC)
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)
Mitglied: 132272
Solution 132272 Feb 23, 2017 updated at 12:26:18 (UTC)
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.
Member: emeriks
emeriks Feb 23, 2017 at 12:31:34 (UTC)
Goto Top
Verstanden. Danke für die Erklärung!
Member: AnkhMorpork
AnkhMorpork Feb 23, 2017 at 14:49:11 (UTC)
Goto Top
<Klug###-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.

</Klug###-Mode>
Mitglied: 132272
132272 Feb 23, 2017 updated at 14:51:52 (UTC)
Goto Top
Rischtisch. Kriegscht a herzl face-wink