Get-ADComputer prikazuje podatke o računalu u Active Directoryu kroz PowerShell

PowerShell cmdlet Get-ADComputer mogu se koristiti za dobivanje različitih podataka o računalnim računima (poslužiteljima i radnim stanicama) u domeni Active Directory. Ovo je jedan od najkorisnijih cmdleta za odabir i pretraživanje računala po različitim kriterijima u AD domeni (za dobivanje podataka o AD korisničkim računima koristi se drugi cmdlet - Get-ADUser).

sadržaj:

  • Osnovna sintaksa i upotreba Get-ADComputer Cmdlet-a
  • Primjeri cmdleta Get-ADComputer

Pretpostavimo da je vaš zadatak pronaći u Active Directoryu sva neaktivna računala koja nisu registrirana u domeni više od 120 dana i blokirati račune tih računala.

Prije nego što počnete koristiti cmdlet Get-ADComputer, morate povezati modul Active Directory za Windows PowerShell.

Uvoz-modul aktivni direktorij

vijeće. U PowerShell 3.0 (uveden u sustavu Windows Server 2012) i noviji, ovaj je modul prema zadanim postavkama povezan prilikom instaliranja alata za daljinsko upravljanje poslužiteljem -> Alati za upravljanje ulogama -> AD DS i AD LDS Alati -> Modul Active Directory za Windows PowerShell. Da biste koristili cmdlet Get-ADComputer u klijentu Windows 10.8.1 i Windows 7, morate preuzeti i instalirati RSAT za vašu verziju OS-a i omogućiti AD-PowerShell modul s upravljačke ploče ili naredbom:
Omogući-WindowsOtionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell

Osnovna sintaksa i upotreba Get-ADComputer Cmdlet-a

Pomoć o parametrima cmdleta Get-ADComputer standardno se poziva pomoću Get-Help:

Get-Help Get-ADComputer

Da biste od AD-a dobili informacije pomoću cmdleta modula AD for Powershell, nije potrebno imati administratorska prava domene, dovoljno je da račun pod kojim se vodi cmdlet bude uključen u skupinu korisnika domene (Autentificirani korisnici / Korisnici domena).

Da biste dobili informacije o računu domene određenog računala ili poslužitelja, navedite njegovo ime kao argument parametra -identitet:

Get-ADComputer -Identity SRV-DB01

DistinguishedName: CN = DB01, OU = poslužitelji, OU = MSK, DC = winitpro, DC = hr DNSHostName: DB01.winitpro.ru Omogućeno: Istinsko ime: DB01 ObjectClass: računalo ObjectGUID: 1234567c-13f8-4a2c-8b00-b30a32324103 SamAcc DB01 $ SID: S-1-5-21-3243682314-1360322815-2238451561-4318 UserPrincipalName: 

Cmdlet je vratio samo osnovna svojstva objekta Computer iz AD-a. Zanima nas vrijeme zadnje registracije računala u AD domeni, ali te informacije nisu u izlazu naredbe. Popis svih dostupnih svojstava ovog računala iz Active Directorya:

Get-ADComputer -Identity SRV-DB01 -Properties *

Koristeći Get-Member možete dobiti popis svih svojstava klase Computer u AD-u:

Get-ADComputer -Filter * -Properties * | Get-članica

Kao što vidite, vrijeme posljednjeg prijava računala na mrežu označeno je u atributu računala LastLogonDate - 21.09.2015. 12:20:17.

Cmdlet Get-ADComputer omogućava vam prikaz bilo kojeg od svojstava računala u rezultatima naredbe. Uklanjamo sve nepotrebne podatke, ostavljajući u izlazu samo vrijednosti polja ime i LastLogonDate.

Get-ADComputer -identity SRV-DB01 -Properties * | Naziv FT, LastLogonDate -Autosize

Dakle, dobili smo podatke o posljednjem trenutku registracije u domeni za jedno računalo. Sada moramo promijeniti naredbu tako da vraća podatke o vremenu zadnje registracije na mreži za sva računala u domeni. Da biste to učinili, zamijenite parametar -identitet na -filter:

Get-ADComputer -Filter * -Properties * | Naziv FT, LastLogonDate -Autosize

Dobili smo tablicu koja sadrži samo 2 polja: ime računala i datum LastLogonData. U ovu tablicu možete dodati druga polja objekta Računalo iz AD-a. Za prikaz informacija o računalima u spremniku određene domene (OU), upotrijebite parametar SearchBase:
Get-ADComputer -SearchBase 'OU = Moskva, DC = winitpro, DC = loc' -Filter * -Properties * | Naziv FT, LastLogonDate -Autosize

Rezultate upita sortiramo prema vremenu zadnje prijave u mrežu (polje LastLogonDate) pomoću naredbe vrsta:

Get-ADComputer -Filter * -Properties * | Poredaj LastLogonDate | Naziv FT, LastLogonDate -Autosize

Dakle, dobili smo popis računala sa domenama i vrijeme njihovog posljednjeg ulaska u mrežu Active Directorya. Sada želimo blokirati račune računala koji se ne koriste više od 120 dana.

Pomoću Get-Date dobivamo trenutni datum u varijabli i oduzimamo 120 dana od trenutnog datuma:

$ date_with_offset = (Datum-datum) .Dodaj (-120)

Dobivena varijabla s datumom može se koristiti kao filtar za Get-ADComputer zahtjev polje LastLogonDate

Get-ADComputer -Properties LastLogonDate -Filter LastLogonDate -lt $ date_with_offset | Poredaj LastLogonDate | Naziv FT, LastLogonDate -Autosize

Tako smo dobili popis neaktivnih računala koja nisu bila registrirana na mreži dulje od 120 dana. Koristeći cmdlet Set-ADComputer ili Disable-ADAccount možete onemogućiti te račune.

vijeće. Prvi put je bolje testirati rezultate naredbe prekidačem -WHATIF, zahvaljujući kojem tim ne vrši nikakve promjene, pokazujući što će se dogoditi kad se izvrši.

Get-ADComputer -Properties LastLogonDate -Filter LastLogonData -lt $ date_with_offset | Set-ADComputer - omogućeno $ false -whatif

Sada možete blokirati sve primljene račune:

Get-ADComputer -Properties LastLogonDate -Filter LastLogonData -lt $ datecutoff | Set-ADComputer -Enabled $ false

vijeće. Popis blokiranih, isključenih i neaktivnih računala i korisnika domene također se može dobiti pomoću zasebnog cmdleta Search-ADAccount..

Primjeri cmdleta Get-ADComputer

Slijedi nekoliko korisnijih primjera naredbi koje koriste cmdlet Get-ADComputer pomoću kojih možete odabrati i pretraživati ​​računala domene prema određenim kriterijima.

Nabavite ukupan broj aktivnih (otključanih) računala u Active Directoryu:

(Get-ADComputer -Filter omogućeno -eq "true")

Pročitajte broj poslužitelja sustava Windows Server u domeni:

(Get-ADComputer -Filter omogućeno -eq "true" -and OperatingSystem -Like '* Windows Server *').

Nabavite popis računala u određenom OU čija imena počinju s BuhPC:

Get-ADComputer -Filter Ime-slično "BuhPC *" -Stražna baza 'OU = Moskva, DC = winitpro, DC = loc' -Properties IPv4Address | Naziv tablice formata, DNSHostName, IPv4Address | ft -Wrap -Auto

Prilikom pretraživanja po OU možete koristiti dodatni parametar -SearchScope 1, što znači da morate tražiti samo u korijenskoj particiji. parametar -SearchScope 2 znači rekurzivnu pretragu računala u svim ugniježđenim OU-ima.

Odaberite sve radne stanice s operativnim sustavom Windows 10:

Get-ADComputer -Filter OperatingSystem -like '* Windows 10 *'

Nabavite popis poslužitelja u domeni s instaliranom verzijom OS-a, IP adresom i servisnim paketom:
Get-ADComputer -Filter 'operativni sustav-sličan' * Windows poslužitelj * "-i omogućen -eq" true "'-Properties Name, Operativni sustav, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address | Sort-Object-Operativni sustav svojstva | Select-Object -Project Name, Operativni sustav, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address | ft -Wrap -Auto

Izlaz je bila jedna tako lijepa tablica s popisom sustava Windows Server u AD-u.

Atribut -LDAPFilter omogućuje vam korištenje različitih LDAP upita kao parametara cmdleta Get-ADComputer:

Get-ADComputer -LDAPFilter "(ime = * db *)" | ft

Odaberite zaključana računala u određenom OU:

Get-ADComputer -filter * -SearchBase 'OU = Računala, dc = winitpro, dc = loc' | Where-Object $ _. Omogućeno -eq $ False

Da biste izbrisali sve računalne račune u domeni koja se nije prijavila na domenu više od 6 mjeseci, možete upotrijebiti naredbu:

get-adcomputer -properties lastLogonDate -filter * | gdje je $ _. lastLogonDate -lt (datum-datum) .addmonths (-6) | Uklonite-ADComputer

Rezultat naredbe Get-ADComputer može se preuzeti u tekstualnu datoteku:

Get-ADComputer -Filter OperatingSystem -Like '* Windows Server 2008 *' -Properties OperatingSystem | Odaberite DNSHostName, OperatingSystem | Format-tablica -AutoSize C: \ Script \ server_system.txt

Možete dobiti i izbor računala i izvesti ga u CSV datoteku:

Get-ADComputer -Filter * -Property * | Select-Object Name, OperatingSystem, OperatingSystemServicePack | Izvezi-CSV All-Windows.csv -NoTypeInformation -Encoding UTF8

Ili nabavite HTML izvještajnu datoteku s popisom računala i potrebnim atributima računala:

Get-ADComputer -Filter OperatingSystem -Like '* Windows Server 2012 *' -Properties * | Select-Object Name, OperatingSystem | ConvertTo-Html | Izvanmrežna datoteka C: \ ps \ ad_computer.html

Da biste izveli određenu radnju sa svim računalima s popisa, morate koristiti Foreach petlju. U ovom primjeru želimo dobiti popis poslužitelja u domeni s modelom i proizvođačem:

$ Computers = Get-ADComputer -Filter OperatingSystem -Like '* Windows Server *'
Foreach ($ Computer in $ Computer)

$ Hostname = $ Computer.Name
$ ComputerInfo = (Get-WmiObject -Computername $ Hostname Win32_ComputerSystem)
$ Proizvođač = $ Computer.Manufacturer
$ Model = $ Computer.Model
Host pisanja "Ime: $ ime hosta"
Domaćin pisanja "Proizvođač: $ Proizvođač"
Host pisanja "Model: $ Model"
Host pisanja ""
$ Content = "$ ime hosta; $ proizvođač; $ model"
Dodajte sadržaj -vrijednost $ Sadržaja -put "C: \ PS \ ServersInfo.txt"

Ili možete koristiti sintaksu kraće petlje. Pretpostavimo da moramo izvršiti određenu naredbu na svim računalima u određenom OU-u (u ovom primjeru želimo pokrenuti naredbu za ažuriranje postavki grupnih pravila na svim poslužiteljima):

get-adcomputer -SearchBase "OU = serveri, DC = winitpro, DC = loc" -Filter * | % Invoke-Command -Compjuter $ _. Ime -ScriptBlock gpupdate / force

Koristeći Get-AdComputer i prijavu skripte PowerShell možete kontrolirati različite postavke računala. Na primjer, pratim status SCCM agenta na računalima korisnika. Kad se svako računalo digne, pokreće skriptu za prijavu koja pomoću Set-ADComputer sprema status usluge ccmexec na besplatni atribut računala - extensionAttribute10.

Zatim pomoću sljedeće naredbe mogu pronaći računala na kojima usluga CCMExec nedostaje ili se ne radi:

get-adcomputer -filter extensionAttribute10 -ne "SCCM agent: Running" -SearchBase "OU = Računala, OU = MSK, DC = winitpro, DC = en" -properties dNSHostName, extensionAttribute10, LastLogonDate | select-object dNSHostName, extensionAttribute LastLogonDate