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
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
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 *
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