
Guten Tag,
Ich versuche zu zählen, wie viele Objekte sich in 9 verschiedenen OUs befinden, die sich in einer OU für den DC meiner Organisation befinden. Diese Liste gibt speziell nur die Anzahl der Objekte (in dieser Situation Computer) zurück, aber das gewonnene Wissen wird mir helfen, bei Bedarf ähnliche Skripte in anderen OUs auszuführen.
Das Problem, auf das ich stoße, ist, dass die foreach-Anweisung nicht alle Elemente in meinem Container zählt und dann nicht in jede einzelne OU schaut. Das ergibt wahrscheinlich mehr Sinn, wenn Sie das Skript lesen. (Ich habe die OU- und DC-Namen geändert).
Import-Module ActiveDirectory
Set-Location "AD:\OU=MACHINES,OU=WESTWING,OU=BLDG202,DC=NORTH,DC=APPS,DC=WEST,DC=HQ"
#IDK why we have so many DCs/A convoluted Active Directory.
$gci = (gci).DistinguishedName #This selects the DistinguishedName Property of each OU (9 of them)
$amountofOU = $gci.Count
$amountofOU #This number is 9, because there are 9 OU's in the MACHINES OU
$Trimthis = ",OU=MACHINES,OU=WESTWING,OU=BLDG202,DC=NORTH,DC=APPS,DC=WEST,DC=HQ"
$array = @()
$i = 0 #####For counting proof that my Foreach is lazy
foreach($item in $gci){
$i ++
$DNTrim = $item.Replace($Trimthis,$null)
$lowrgci = gci ($DNTrim).Trim()
$amount = $lowrgci.count
$Letter = "`nThe OU $DNTrim has $amount of objects inside"
##This is the message I am trying to have popup at end of script, with each OU's object count in it.
$array += $Letter
return $array;}
$i
####This has been returning 1, because the foreach does not go to each $item
#The below are just me messing around with output -
#Bonus points if you can make one of them work when not using console
#(New-Object -ComObject wscript.shell).Popup("$array",2000,"OU Counter Thing",0x0 + 0x0)
[System.Windows.Forms.MessageBox]::Show("$array","Title")
Ich habe heute (leider) ungefähr 4 Stunden lang gegoogelt/daran gearbeitet und bin fast den Verstand verloren. Ich wäre für jede Hilfe wirklich dankbar; ich hatte noch nie Probleme mit einer Lazy-Foreach-Anweisung. Ich vermute, ich habe etwas falsch gemacht oder die Arbeit in PSDRIVE AD:\ ist ungewöhnlich.
Wenn Sie denken, ich sei faul oder hätte keine Recherche betrieben, tut mir das leid. Aber ich habe das Gefühl, dass ich eine ganze Menge getan habe. Einige Artikel, die ich gelesen habe:
https://powershell.org/forums/topic/foreach-loop-not-working/
Powershell-Foreach-Anweisung funktioniert nicht
https://serverfault.com/search?q=Active+directory+get+child+item