Оператор Powershell Foreach не работает в AD при сочетании с Get-ChildItem

Оператор Powershell Foreach не работает в AD при сочетании с Get-ChildItem

Добрый день,

Я пытаюсь подсчитать, сколько объектов находится в 9 различных OU, которые находятся в OU для DC моей организации. Этот список специально вернет только количество объектов (компьютеров в этой ситуации), но полученные знания помогут мне запустить аналогичные скрипты в других OU, если это необходимо.

Проблема, с которой я сталкиваюсь, заключается в том, что оператор foreach не учитывает все элементы в моем контейнере, а затем не смотрит на каждую отдельную OU. Возможно, это будет более понятно, если вы прочитаете сценарий. (Я изменил имена OU и DC).

        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")

Я гуглил/работал над этим около (печально) 4 часов сегодня и почти сошел с ума. Буду очень признателен за любую помощь; у меня никогда раньше не было проблем с ленивым оператором Foreach. Думаю, я что-то сделал не так или работа в PSDRIVE AD:\ необычна.

Если вы думаете, что я ленивый или что я не провел никаких исследований, извините. Но я чувствую, что провел приличное количество исследований. Некоторые статьи, которые я читал:

Как исправить цикл foreach в PowerShell для каждого пользователя подразделения Active Directory?

https://powershell.org/forums/topic/foreach-loop-not-working/

Оператор Powershell foreach не работает

https://serverfault.com/search?q=Active+directory+get+child+item

Связанный контент