Puncte:2

Get-ADComputer cu ORICE filtru care nu funcționează (modul încărcat)

drapel cn

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:

  1. 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).
  2. 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)

drapel cn
Numele distinctiv nu poate fi interogat cu un wildcard. https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx . Ar fi de ajutor dacă ați confirma că interogarea funcționează în afara PowerShell. Puteți rula o interogare personalizată în căutarea avansată AD Users and Computers.
Semicolon avatar
drapel jo
Doar o notă, în captură de ecran (și poate și în altă parte a istoricului dvs.), ați introdus una dintre componentele domeniului ca ...DC-... în loc de ...DC=. greșeală de scriere; ai un semn minus când ar trebui să fie un semn egal. Nu știu cât de mult este de vină. Dar cu siguranță este cauza erorii de captură de ecran.
Semicolon avatar
drapel jo
Iată câteva note: Get-ADComputer -Filter * -SearchBase „OU=Blah,DC=blah,dc=domain,dc=com” Va returna 100% orice obiect computer din acea cale. Dacă nu obțineți niciun rezultat și nicio eroare, nu există nimic în acea cale. Dacă primiți o eroare și niciun rezultat - citiți eroarea „Obiect director nu a fost găsit” înseamnă că aveți o unitate organizatorică proastă în baza dvs. de căutare - înseamnă probabil că ați introdus un DN greșit pentru unitatea organizatorică pe care o aveți caut. Sistemul de operare-> nu contează / ordinea filtrului-căutare în bază -> nu contează / majuscule -> nu contează / Invoke-GPUpdate -> într-adevăr? Ick.
drapel br
[1] când utilizați `-Filter` ... veți primi o eroare NUMAI dacă există o eroare de sintaxă. dacă un filtru nu returnează nimic... atunci acesta este un răspuns valid și NU veți vedea nicio eroare. ///// [2] chestiile `-Filter *` sunt aproape lipsite de sens. nu face asta - adaugă complexitate în timp ce nu face absolut nimic bun.
tangled_cables avatar
drapel cn
@Punt și virgulă Bună captură, da, cu siguranță a fost o greșeală de tipar, dar doar una dintre multele rulări, din păcate. De fapt, cred că l-am rulat doar pentru această postare. Celelalte rulări sunt încrezător, deoarece foloseam un fișier ps1 cu semnele = nu au avut această problemă. Dar captură de sintaxă minunată. De asemenea, în ceea ce privește alegerea mea de a folosi Invoke-GPUpdate a fost bine... nu alegerea mea, nou în companie, nu au putut să funcționeze, așa că iată-ne. Sarcinile programate sunt interzise aici, așa că a fost un nu. Și acest script este unul dintre cele 3, doar a aplicat modificările unui GPO pe computerele OU, apoi când GPO-ul este deconectat mai târziu, rulează din nou.
tangled_cables avatar
drapel cn
@GregAskew Apreciez feedback-ul, nu aveam nicio idee despre numele distins înainte. De asemenea, cu siguranță voi folosi GUI pentru a testa data viitoare când voi avea probleme cu scripturile care folosesc modulul AD.
Puncte:1
drapel cn

Destul de ciudat, acest lucru a fost rezolvat prin adăugarea unei variabile care să dețină computerele și rulând într-un pentru fiecare buclă: (În plus, am greșit comanda OU, dar asta nu a explicat celelalte teste pe care le-am executat cu OU-uri de nivel superior care au eșuat.)

$computers = Get-ADComputer - Filtru * - SearchBase "OU=WVDTestEnvironment,OU=TopLevelOU,DC=contoso,DC=com"

foreach ($computer în $computer) {

Invoke-GPUpdate -Computer $computer.Name -RandomDelayInMinutes 0

}

Vă mulțumesc tuturor pentru ajutor. Poate că asta va ajuta pe altcineva în viitor.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.