Am petrecut multe ore în acest sens și am angajat o serie de persoane despre care știu că sunt experți PowerShell fără nici un fel de noroc. Ar trebui să fie simplu, dar cu siguranță nu funcționează așa de data aceasta.
Obiectiv:
- Vreau să obțin toate computerele într-o OU (calculatoarele din OU se vor schimba - sunt deschis să folosesc o listă de servere, dar va trebui totuși să ruleze pentru a obține zilnic computerele din OU și pentru a actualiza fișierul txt înainte de a continua pe a doua sarcină - pe cale de a explica).
- Apoi voi folosi computerele găsite în OU pentru a rula gpupdate (nu forțat, există o singură politică conectată la X oră pe zi - aceasta este gestionată cu succes de un alt set de scripturi PS). Știu că acest lucru poate fi realizat manual pentru OU-uri, deoarece nu așa vrem să mergem. Utilizăm un instrument terță parte pentru a rula scripturile PS într-un program.Programul de activități nu este utilizat pe acest computer din cauza problemelor anterioare cu managementul, dar indiferent că instrumentul terță parte este în regulă. Problema este că nu pot returna computerele în OU.
Pot returna toate computerele și proprietățile lor de bază din domeniul meu folosind:
Get-ADComputer -Filter *
Cu toate acestea, am avut 0 succes rulând cu „SearchBase” și orice filtru:
Get-ADComputer -SearchBase "OU=WVDTestEnvironment,DC=contoso,DC=com" -Filter "*"
Am încercat să mut Filtrul înainte de SearchBase, eliminând ghilimele din jurul *, folosind ghilimele simple, lăsând filtrul și introducându-l când vi se solicită ca *, schimbând majuscule pe aproape fiecare cuvânt, numele OU verificat, domeniul etc., adăugând spații între OU și DC, schimbând OU în CN, asigurându-vă că modulul este încărcat (este).
Chiar dacă această porțiune funcționează, fragmentul meu continuă să facă gpupdate după o conductă, dar am eliminat-o complet, deoarece nu pot trece de această parte de bază pentru a colecta computerul pentru a actualiza.
Notă suplimentară - acest lucru a fost încercat pe Windows Server 2016 și Windows Server 2019, 16 gb 4 cpus, respectiv 32 gb 8 cpus, doar pentru a arăta cai putere există - sistemele de operare pot fi semnificative, deoarece nu am avut probleme în trecut pe serverele 2012 și pagina pe care am găsit-o cea mai mare parte a scriptului o rula pe 2012 R2 cred.
Am incercat sa alerg:
Get-ADComputer -Filter 'DistinguishedName -cum ar fi "CN=contoso,CN=com"'
Cele de mai sus nu returnează o eroare, dar nu returnează niciun rezultat. Chiar dacă ar trebui să returneze și toate conturile de computer din domeniu.
Eroare pe care o primesc când încerc să rulez fragmentul meu original:
Get-ADComputer -SearchBase "OU=WVDTestEnvironment,DC=contoso,DC=com" -Filter "*"
este dedesubt:
Cod Powershell și eroare returnată
Această OU este, de asemenea, o OU copil/sub, așa că am încercat să includ și OU de nivel superior în baza mea de căutare, dar eroarea a fost aceeași (nu este ilustrată)
Get-ADComputer -SearchBase "OU=TopLevelOUName,OU=WVDTestEnvironment,DC=contoso,DC=com" -Filter "*"
Orice ajutor sau sfaturi ar fi MULT apreciat. Sunt încrezător că nu voi avea probleme cu comanda GPUpdate odată ce voi putea recupera fie un fișier text de computere, fie computere păstrate în memorie și pot folosi comanda după o conductă pe aceeași linie powershell. Pot să scot țeava, să adaug o linie nouă, orice este nevoie. Trebuie doar să returnez aceste conturi de computer, deoarece această OU va fluctua foarte mult pe măsură ce trece timpul.
Am găsit inițial acest fragment PowerShell la https://blog.thesysadmins.co.uk/group-policy-gpupdate-an-ou-of-computers.html (vezi metoda 2)