Get-ADComputer să returneze o proprietate diferită de cea interogată? (Programare, Powershell, Selectează, Director Activ)

Karmaxdw a intrebat.

Folosesc Get-ADComputer pentru a căuta în domeniul meu un anumit șir de caractere în proprietatea Location. Cu toate acestea, când îl găsesc, vreau să returnez proprietatea Name în care a fost găsit șirul.

Compania mea utilizează versiunea 5.1 a Powershell, dacă acest lucru face diferența.

Am încercat deja să introduc Name după „select-string -Pattern ‘example'”, dar pur și simplu nu returnează nimic, presupun că are impresia că eu caut proprietatea Location și nu rezultatul Get-ADComputer. Răspunsul va fi, probabil, cineva care îmi va spune să stochez întregul Get-ADComputer ca o variabilă, dar nu sunt sigur care este limita de date pentru variabilele Powershell și se pare că aș analiza destul de multe date.

Get-ADComputer -properties Location -SearchBase "OU=E, DC=M" -filter 'Name -like "*"' | select Location | select-string -pattern "example"

Rezultatul meu actual este întreaga proprietate Location, dar rezultatul dorit este proprietatea Name în timpul căutării locației. Ar fi și mai bine dacă aș putea să le returnez pe amândouă.

1 răspunsuri
AdminOfThings

Dacă sunteți în căutarea șirului de caractere example în cadrul locației, puteți filtra pe locație și apoi să redați numele.

Get-ADComputer -SearchBase "OU=E, DC=M" -Filter "location -like '*example*'" | Select-Object Name

Dacă sunteți în căutarea șirului example în cadrul Name (Nume), puteți filtra pe Name (Nume) și tot atunci puteți scoate numele.

Get-ADComputer -SearchBase "OU=E, DC=M" -Filter "Name -like '*example*'" | Select-Object Name

Dacă doriți să afișați mai multe proprietăți, inclusiv locația și numele, va trebui să adăugați opțiunea -properties pentru a gestiona locația.

Get-ADComputer -Properties location -SearchBase "OU=E, DC=M" -Filter "Name -like '*example*'" | Select-Object Name,location

Dacă doriți să găsiți șirul example în cadrul oricărei proprietăți care iese în mod implicit din Get-ADComputer atunci veți avea nevoie de ceva de genul următor:

Get-ADComputer -Properties location -SearchBase "OU=E, DC=M" -Filter * | Where-Object { $_ | Out-String | Select-String -pattern "example"}

Explicație:

Select-Object va produce un obiect personalizat cu proprietățile pe care le-ați selectat. Adresa -Filter de pe comenzile AD are la dispoziție operatori limitați. Dacă sunteți în căutarea unui simplu șir de caractere, știți ce proprietate conține șirul, dar nu știți unde există șirul în cadrul șirului, utilizați comanda -like operator. La * caracterele sunt pentru caractere wildcards. -Filter este aproape întotdeauna mai rapid decât să fie introdus în altceva, așa că ar trebui să îl folosiți dacă puteți.

Where-Object { $_ } procesează obiectul curent ($_) din pipeline, care include toate proprietățile introduse în comandă. Dacă doriți să comparați doar o singură proprietate, atunci $_ ar trebui să devină $_.propertyname.

Comentarii

  • Mulțumesc că mi-ați simplificat nebunia. M-am holbat la ecran în ultimele opt ore și se pare că am vrut să-mi fac viața 103924901x mai complicată. Sunteți „bomba” –  > Por Karmaxdw.