Get-ADComputer zobrazuje informácie o počítači v službe Active Directory pomocou programu PowerShell

Rutina PowerShell Get-ADComputer sa dá použiť na získanie rôznych informácií o počítačových účtoch (serveroch a pracovných staniciach) v doméne služby Active Directory. Toto je jeden z najužitočnejších rutín na výber a vyhľadávanie počítačov podľa rôznych kritérií v doméne AD (na získanie informácií o používateľských kontách AD sa používa ďalší rutina - Get-ADUser).

obsah:

  • Základná syntax a používanie Cmdlet Get-ADComputer
  • Príklady cmdletov Get-ADComputer

Predpokladajme, že vašou úlohou je nájsť v službe Active Directory všetky neaktívne počítače, ktoré neboli zaregistrované v doméne dlhšie ako 120 dní, a zablokovať účty týchto počítačov..

Predtým, ako začnete používať rutinu Get-ADComputer, musíte pripojiť modul Active Directory pre Windows PowerShell.

Adresár importovaného modulu

rada. Vo verzii PowerShell 3.0 (predstavenej v systéme Windows Server 2012) a vyššie je tento modul predvolene pripojený pri inštalácii nástrojov na správu vzdialenej servera -> Nástroje na správu rolí -> Nástroje AD DS a AD LDS -> modul Active Directory pre Windows PowerShell. Ak chcete používať rutinu Get-ADComputer v klientovi Windows 10.8.1 a Windows 7, musíte si stiahnuť a nainštalovať RSAT pre svoju verziu OS a povoliť modul AD-PowerShell z ovládacieho panela alebo príkazom:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell

Základná syntax a používanie Cmdlet Get-ADComputer

Pomoc s parametrami cmdlet Get-ADComputer sa štandardne vyvoláva pomocou Get-Help:

Get-Help Get-ADComputer

Na získanie informácií z AD pomocou rutín cm modulu AD pre Powershell nie je potrebné mať práva administrátora domény, stačí, že účet, pod ktorým je rutina spustená, je zahrnutý do skupiny užívateľov domény (Autentifikovaní používatelia / Používatelia domény).

Ak chcete získať informácie o účte domény konkrétneho počítača alebo servera, zadajte jeho názov ako argument parametra -identita:

Get-ADComputer -Identity SRV-DB01

Rozlišujúci názov: CN = DB01, OU = Servery, OU = MSK, DC = winitpro, DC = sk DNSHostName: DB01.winitpro.ru Povolené: Skutočné meno: DB01 ObjectClass: computer ObjectGUID: 1234567c-13f8-4a2c-8b00-b30a32324103 SamAccountName: DB01 $ SID: S-1-5-21-3243682314-1360322815-2238451561-4318 UserPrincipalName: 

Rutina vrátila z AD iba základné vlastnosti objektu Computer. Zaujíma nás čas poslednej registrácie počítača v doméne AD, ale táto informácia nie je vo výstupe príkazu. Zoznam všetkých dostupných vlastností tohto počítača zo služby Active Directory:

Get-ADComputer -Identity SRV-DB01 -Vlastnosti *

Pomocou funkcie Get-Member môžete získať zoznam všetkých vlastností triedy Computer v AD:

Get-ADComputer -Filter * -Súbory * | Get-Člen

Ako vidíte, čas posledného prihlásenia počítača do siete je uvedený v atribúte počítača LastLogonDate - 21.9.2015 12:20:17.

Rutina Get-ADComputer vám umožňuje zobraziť všetky vlastnosti počítača vo výsledkoch príkazu. Odstránime všetky nepotrebné informácie a vo výstupe zostanú iba hodnoty polí názov a LastLogonDate.

Get-ADComputer -identity SRV-DB01 -Vlastnosti * | Názov FT, LastLogonDate -Autosize

Získali sme teda údaje o poslednej registrácii v doméne pre jeden počítač. Teraz musíme príkaz zmeniť, aby vrátil informácie o čase poslednej registrácie v sieti pre všetky počítače v doméne. Vymeňte parameter -identita na -filter:

Get-ADComputer -Filter * -Súbory * | Názov FT, LastLogonDate -Autosize

Dostali sme tabuľku, ktorá obsahuje iba 2 polia: názov počítača a dátum LastLogonData. Do tejto tabuľky môžete pridať ďalšie polia objektu Computer z AD. Ak chcete zobraziť informácie o počítačoch v kontajneri konkrétnej domény (OU), použite parameter SearchBase:
Get-ADComputer -SearchBase 'OU = Moscow, DC = winitpro, DC = loc' -Filter * -Procurties * | Názov FT, LastLogonDate -Autosize

Výsledky dotazu zoradíme podľa času posledného prihlásenia do siete (pole LastLogonDate) pomocou príkazu druh:

Get-ADComputer -Filter * -Súbory * | Zoradiť LastLogonDate | Názov FT, LastLogonDate -Autosize

Dostali sme teda zoznam doménových počítačov a čas ich posledného vstupu do siete Active Directory. Teraz chceme zablokovať účty počítačov, ktoré sa nepoužívali dlhšie ako 120 dní.

Pomocou funkcie Get-Date získame aktuálny dátum v premennej a odpočítame 120 dní od aktuálneho dátumu:

$ date_with_offset = (Get-Date) .AddDays (-120)

Získaná premenná s dátumom môže byť použitá ako filter pre požiadavku Get-ADComputer do poľa LastLogonDate

Get-ADComputer -Properties LastLogonDate -Filter LastLogonDate -lt $ date_with_offset | Zoradiť LastLogonDate | Názov FT, LastLogonDate -Autosize

Dostali sme tak zoznam neaktívnych počítačov, ktoré neboli zaregistrované v sieti dlhšie ako 120 dní. Používanie rutiny Set-ADComputer alebo Disable-ADAccount môžete tieto účty deaktivovať.

rada. Po prvýkrát je lepšie otestovať výsledky príkazu pomocou prepínača -WhatIf, vďaka čomu tím nerobí žiadne zmeny, ukazuje, čo sa stane, keď bude popravený.

Get-ADComputer -Properties LastLogonDate -Filter LastLogonData -lt $ date_with_offset | Set-ADComputer - Povolené $ false - whatif

Teraz môžete zablokovať všetky prijaté počítačové účty:

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

rada. Zoznam blokovaných, odpojených a neaktívnych používateľov počítačov a domén je možné získať aj pomocou samostatnej rutiny Search-ADAccount..

Príklady cmdletov Get-ADComputer

Nižšie je uvedených niekoľko užitočných príkladov príkazov, ktoré používajú rutinu Get-ADComputer, ktorú môžete použiť na výber a vyhľadávanie určitých domén v počítačoch..

Získajte celkový počet aktívnych (odomknutých) počítačov v službe Active Directory:

(Get-ADComputer -Filter enabled -eq "true")

Prečítajte si počet serverov Windows Server v doméne:

(Get-ADComputer -Filter enabled -eq "true" - a OperatingSystem - L '' Windows Server * ').

Získajte zoznam počítačov v špecifickej organizačnej jednotke, ktorej mená začínajú na BuhPC:

Get-ADComputer -Filter Name-like "BuhPC *" -SearchBase 'OU = Moscow, DC = winitpro, DC = loc' -Properties IPv4Address | Názov tabuľky formátov, DNSHostName, IPv4Address | ft -Wrap -Auto

Pri vyhľadávaní podľa OU môžete použiť ďalší parameter -SearchScope 1, čo znamená, že musíte hľadať iba v koreňovom oddiele. parameter -SearchScope 2 znamená rekurzívne vyhľadávanie počítačov vo všetkých vnorených organizačných jednotkách.

Vyberte všetky pracovné stanice so systémom Windows 10:

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

Získajte zoznam serverov v doméne s nainštalovanou verziou OS, adresou IP a balíkom Service Pack:
Get-ADComputer -Filter 'operatingsystem-like "* Windows server *" -a enabled -eq "true"' -Properties Name, Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address | Sort-Object - Operatingsystem vlastníctva Select-Object - Názov vlastníctva, Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address | ft -Wrap -Auto

Výstupom bola taká krásna tabuľka so zoznamom Windows Server v AD.

Atribút -LDAPFilter vám umožňuje používať rôzne dotazy LDAP ako parameter cmdlet Get-ADComputer, napríklad:

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

Vyberte uzamknuté počítače v konkrétnom OU:

Get-ADComputer -filter * -SearchBase 'OU = Počítače, dc = winitpro, dc = loc' | Where-Object $ _. Enabled -eq $ False

Ak chcete odstrániť všetky účty počítačov v doméne, ktoré sa neprihlásili do domény dlhšie ako 6 mesiacov, môžete použiť príkaz:

get-adcomputer -properties lastLogonDate -filter * | kde $ _. lastLogonDate -lt (get-date) .addmonths (-6) | Remove-ADComputer

Výsledok príkazu Get-ADComputer je možné stiahnuť do textového súboru:

Get-ADComputer -Filter OperatingSystem -Like '* Windows Server 2008 *' -Properties OperatingSystem | Vyberte DNSHostName, OperatingSystem | Tabuľka formátu -AutoSize C: \ Script \ server_system.txt

Môžete tiež získať výber počítačov a exportovať ich do súboru CSV:

Get-ADComputer -Filter * -Property * | Vyberte názov objektu, OperatingSystem, OperatingSystemServicePack | Exportovať všetky CSV systému Windows-CSV -NoTypeInformation -Kódovanie UTF8

Alebo získajte súbor správy HTML so zoznamom počítačov a potrebnými počítačovými atribútmi:

Get-ADComputer -Filter OperatingSystem -Like '* Windows Server 2012 *' -Properties * | Názov Select-Object, OperatingSystem | ConvertTo-Html | Out-file C: \ ps \ ad_computer.html

Ak chcete vykonať konkrétnu akciu so všetkými počítačmi zo zoznamu, musíte použiť slučku Foreach. V tomto príklade chceme získať zoznam serverov v doméne s modelom a výrobcom:

$ Computers = Get-ADComputer -Filter OperatingSystem -Like '* Windows Server *'
Foreach ($ Počítač v $ počítačoch)

$ Hostname = $ Computer.Name
$ ComputerInfo = (Get-WmiObject -computername $ Názov hostiteľa Win32_ComputerSystem)
$ Výrobca = $ Computer.Výrobca
$ Model = $ Computer.Model
Write-Host "Name: $ Hostname"
Hostiteľ "Výrobca: $ Výrobca"
Hostiteľ typu „napíšte: $ Model“
Write-Host ""
$ Content = "$ Názov hostiteľa; $ Výrobca; $ Model"
Pridajte obsah -hodnota $ Obsah -cesta "C: \ PS \ ServersInfo.txt"

Alebo môžete použiť syntax kratšej slučky. Predpokladajme, že potrebujeme vykonať konkrétny príkaz na všetkých počítačoch v špecifickej organizačnej jednotke (v tomto príklade chceme spustiť príkaz na aktualizáciu nastavení skupinovej politiky na všetkých serveroch):

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

Pomocou programu Get-AdComputer a prihlasovacieho skriptu PowerShell môžete ovládať rôzne nastavenia počítača. Napríklad monitorujem stav agenta SCCM v počítačoch používateľov. Keď sa každý počítač zavedie, spustí prihlasovací skript, ktorý pomocou Set-ADComputer uloží stav služby ccmexec do atribútu voľného počítača - extensionAttribute10.

Potom pomocou nasledujúceho príkazu nájdem počítače, na ktorých služba CCMExec chýba alebo nie je spustená:

get-adcomputer -filter extensionAttribute10 -ne "Agent SCCM: Running" -SearchBase “OU = Computers, OU = MSK, DC = winitpro, DC = en” -properties dNSHostName, extensionAttribute10, LastLogonDate | select-object dNSHostName, extensionAttribute LastLogonDate