A Get-ADComputer megjeleníti a számítógépes információkat az Active Directoryban a PowerShell segítségével

PowerShell-parancsmag Get-ADComputer felhasználható különféle információk megszerzésére az Active Directory tartományban található számítógépes fiókokról (szerverek és munkaállomások). Ez az egyik leghasznosabb parancsmag a számítógépek kiválasztásához és a kereséshez az AD tartomány különböző kritériumai szerint (az AD felhasználói fiókokról való információhoz egy másik parancsmag használható - Get-ADUser).

Tartalom:

  • Alapszintű szintaxis és a Get-ADComputer Cmdlet használata
  • Get-ADComputer parancsmag-példák

Tegyük fel, hogy az a feladat, hogy megtalálja az Active Directory-ban az összes inaktív számítógépet, amelyet a tartományban nem regisztráltak 120 napnál hosszabb ideig, és blokkolja e számítógépek fiókjait..

A Get-ADComputer parancsmag használatának megkezdése előtt csatlakoztatnia kell az Active Directory modult a Windows PowerShellhez.

Import-Modul aktív könyvtár

tanács. A PowerShell 3.0 (a Windows Server 2012-ben bevezetett) és újabb verziókban ez a modul alapértelmezés szerint csatlakozik a Távoli kiszolgáló adminisztrációs eszközei -> Szerepkezelési eszközök -> AD DS és AD LDS eszközök -> Active Directory modul telepítéséhez a Windows PowerShellhez. A Get-ADComputer parancsmag használatához a Windows 10.8.1 és a Windows 7 kliensben le kell töltenie és telepítenie kell az RSAT operációs rendszer verzióját, és engedélyeznie kell az AD-PowerShell modult a vezérlőpultról vagy a következő paranccsal:
Engedélyezés - WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell

Alapszintű szintaxis és a Get-ADComputer Cmdlet használata

A Get-ADComputer parancsmag paramétereivel kapcsolatos súgót általában a Get-Help használatával hívják meg:

Get-Help Get-ADComputer

Annak érdekében, hogy az AD-ből információkat szerezzen az AD for Powershell modul parancsmagjai segítségével, nincs szükség tartományi rendszergazdai jogokra, elegendő, ha az a fiók, amelyen a parancsmag fut, a domain felhasználói csoportba tartozik (hitelesített felhasználók / tartományi felhasználók)..

Ha egy adott számítógép vagy szerver tartományfiókjáról szeretne információt kapni, akkor adja meg annak nevét paraméter argumentumaként -azonosság:

Get-ADComputer -Identity SRV-DB01

DistinguishedName: CN = DB01, OU = Szerverek, OU = MSK, DC = winitpro, DC = hu DNSHostName: DB01.winitpro.ru Engedélyezve: Valódi név: DB01 ObjectClass: számítógép ObjectGUID: 1234567c-13f8-4a2c-8b00-b30a32324103 Samcc DB01 $ SID: S-1-5-21-3243682314-1360322815-2238451561-4318 UserPrincipalName: 

A parancsmag csak a Computer objektum alapvető tulajdonságait adta vissza az AD-től. Érdekel az a dátum, amikor az utolsó számítógépes regisztráció történt az AD tartományban, de ezek az információk nem szerepelnek a parancs kimenetében. Sorolja fel a számítógép összes elérhető tulajdonságát az Active Directory-ból:

Get-ADComputer -Identity SRV-DB01 -Tulajdonságok *

A Get-Member segítségével beolvashatja az AD Computer osztály összes tulajdonságát:

Get-ADComputer-Szűrő * - Tulajdonságok * | Get-tag

Mint láthatja, a számítógép utolsó hálózati bejelentkezési idejét a LastLogonDate - 2015.09.21. 12:20:17 számítógépes attribútum jelzi..

A Get-ADComputer parancsmag lehetővé teszi a számítógép tulajdonságainak megjelenítését a parancs eredményeiben. Távolítunk el minden felesleges információt, csak a mező értékeit hagyjuk a kimeneten név és LastLogonDate.

Get-ADComputer -identity SRV-DB01 -Properties * | FT név, LastLogonDate -Autosize

Tehát megkaptuk az adatokat a domain regisztrációjának legutóbbi időpontjáról egy számítógépre. Most meg kell változtatnunk a parancsot úgy, hogy az a tartomány összes számítógépére visszatérjen információt a hálózat utolsó regisztrációjának idejéről. Ehhez cserélje ki a paramétert -azonosság tovább -szűrő:

Get-ADComputer-Szűrő * - Tulajdonságok * | FT név, LastLogonDate -Autosize

Van egy olyan tábla, amely csak 2 mezőt tartalmaz: számítógép neve és dátuma LastLogonData. A számítógép-objektum egyéb mezőit hozzáadhatja az AD-ből ehhez a táblázathoz. Egy adott domain (OU) tárolóban található számítógépekkel kapcsolatos információk megjelenítéséhez használja a paramétert searchbase:
Get-ADComputer -SearchBase 'OU = Moszkva, DC = winitpro, DC = loc' -Filter * -Properties * | FT név, LastLogonDate -Autosize

A lekérdezés eredményeit a parancs segítségével a hálózatba való utolsó bejelentkezés időpontja szerint rendezzük (LastLogonDate mező) fajta:

Get-ADComputer-Szűrő * - Tulajdonságok * | Rendezés LastLogonDate | FT név, LastLogonDate -Autosize

Tehát megkaptuk a tartományi számítógépek listáját és az Active Directory hálózatba való utolsó belépésük idejét. Most blokkolni szeretnénk azokat a számítógépes fiókokat, amelyeket 120 napja nem használtak.

A Get-Date használatával az aktuális dátumot kapjuk meg a változóban, és 120 napot vonunk le az aktuális dátumtól:

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

A kapott dátummal rendelkező változó szűrőként használható a Get-ADComputer kérésére a LastLogonDate mezőben

Get-ADComputer - Tulajdonságok LastLogonDate -Filter LastLogonDate -lt $ date_with_offset | Rendezés LastLogonDate | FT név, LastLogonDate -Autosize

Így olyan inaktív számítógépek listáját kaptunk, amelyeket 120 napnál hosszabb ideig nem regisztráltak a hálózaton. A parancsmag használata Set-ADComputer vagy a Disable-ADAccount funkcióval letilthatja ezeket a fiókokat.

tanács. Először jobb, ha a kapcsolóval teszteljük a parancs eredményeit -WhatIf, ennek köszönhetően a csapat nem hajt végre változtatásokat, megmutatva, mi fog történni, amikor végrehajtják.

Get-ADComputer - Tulajdonságok LastLogonDate -Filter LastLogonData -lt $ date_with_offset | Set-ADComputer - Engedélyezve $ false -whatif

Most már blokkolhatja az összes fogadott számítógépes fiókot:

Get-ADComputer - Tulajdonságok LastLogonDate -Filter LastLogonData -lt $ datecutoff | Set-ADComputer - Ennabled $ false

tanács. A blokkolt, leválasztott és inaktív számítógépek és a tartományi felhasználók listáját a külön-Search-ADAccount parancsmag segítségével is beszerezheti..

Get-ADComputer parancsmag-példák

Az alábbiakban bemutatunk néhány hasznosabb példát a Get-ADComputer parancsmag segítségével végrehajtott parancsokra, amelyek segítségével kiválaszthatják és kereshetik a tartományi számítógépeket bizonyos feltételekhez.

Szerezze be az összes aktív (nem nyitott) számítógépet az Active Directory-ban:

(Get-ADComputer -Filter engedélyezett -eq "true")

Olvassa el a tartományban lévő Windows Server kiszolgálók számát:

(Get-ADComputer-Szűrő engedélyezve -eq "true" és az operációs rendszer -Mint '* Windows Server *').

Készítsen egy olyan OU számítógépek listáját, amelyek neve BuhPC-vel kezdődik:

Get-ADComputer-Szűrő Név-szerű "BuhPC *" -SearchBase 'OU = Moszkva, DC = winitpro, DC = loc' -Tulajdonságok IPv4Cím | Formátumtáblázat neve, DNSHostName, IPv4Cím | ft -Wrap -Automatikus

Ha az OU alapján keres, akkor további paramétert is használhat -SearchScope 1, ami azt jelenti, hogy csak a gyökérpartícióban kell keresnie. paraméter -SearchScope 2 a számítógépek rekurzív keresését jelenti az összes beágyazott egységben.

Válassza ki az összes Windows 10 rendszert futtató munkaállomást:

Get-ADComputer-Szűrő OperatingSystem-szerű '* Windows 10 *'

Szerezzen egy olyan domain kiszolgálóinak listáját, amelyeken telepítve van az operációs rendszer verziója, IP-címe és szervizcsomagja:
Get-ADComputer - Szűrő 'operációs rendszer-szerű' * Windows szerver * 'és engedélyezve -eq' true '' - Tulajdonságok neve, operációs rendszer, OperatingSystemVersion, OperatingSystemServicePack, IPv4Cím | Sort-Object - Tulajdonság operációs rendszer | Select-Object - Tulajdonság neve, Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address | ft -Wrap -Automatikus

A kimenet egy ilyen szép tábla volt az AD-ben lévő Windows Server listájával.

A -LDAPFilter attribútum lehetővé teszi különféle LDAP lekérdezések használatát a Get-ADComputer parancsmag paramétereként, például:

Get-ADComputer -LDAPFilter "(név = * db *)" | ft

Válasszon zárolt számítógépeket egy adott OU-ban:

Get-ADComputer -szűrő * -SearchBase 'OU = Computers, dc = winitpro, dc = loc' | Hol-objektum $ _. Engedélyezve -eq $ hamis

A tartomány összes olyan számítógépes fiókjának törléséhez, amely 6 hónapnál hosszabb ideig nem jelentkezett be a tartományba, használhatja a következő parancsot:

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

A Get-ADComputer parancs eredménye letölthető egy szöveges fájlba:

Get-ADComputer-Szűrő OperatingSystem -Like '* Windows Server 2008 *' -Tulajdonságok OperatingSystem | Válassza a DNSHostName, az operációs rendszer | Táblázat formátum - Automatikus méret C: \ Script \ kiszolgáló_rendszer.txt

Azt is beszerezheti a kiválasztott számítógépeket, és exportálhatja azokat egy CSV-fájlba:

Get-ADComputer-szűrő * -tulajdon * Select-Object név, OperatingSystem, OperatingSystemServicePack | Exportálás-CSV All-Windows.csv -NoTypeInformation -Kódolás UTF8

Vagy szerezzen be egy HTML jelentésfájlt a számítógépek listájával és a szükséges számítógépes attribútumokkal:

Get-ADComputer-Szűrő OperatingSystem -Like '* Windows Server 2012 *' -Tulajdonságok * | Kiválasztás-objektum neve, operációs rendszer | ConvertTo-Html | Kimenő fájl C: \ ps \ ad_computer.html

Egy adott művelet végrehajtásához a listán szereplő összes számítógéppel a Foreach hurkot kell használni. Ebben a példában szeretnénk beszerezni a tartomány szervereinek listáját a modellvel és a gyártóval:

$ Számítógépek = Get-ADComputer-Szűrő OperatingSystem -Mint '* Windows Server *'
Foreach ($ számítógép dollárban számítógépekben)

$ Hostname = $ Computer.Name
$ ComputerInfo = (Get-WmiObject -computername $ Gazdagépnév Win32_ComputerSystem)
$ Gyártó = $ Számítógép.Gyártó
$ Model = $ Computer.Model
Író-fogadó "Név: $ Hostname"
Write-Host "Gyártó: $ Manufacturer"
Írás-fogadó "Modell: $ Modell"
Írás-fogadó ""
$ Content = "$ Hostname; $ Gyártó; $ Model"
Adjon hozzá tartalmat -érték $ Tartalom -útvonal "C: \ PS \ ServersInfo.txt"

Vagy használhat rövidebb hurok-szintaxist is. Tegyük fel, hogy egy speciális parancsot végre kell hajtanunk egy adott OU minden számítógépén (ebben a példában a parancsot futtatni akarjuk az összes kiszolgálón a csoportszabályok frissítéséhez):

get-adcomputer -SearchBase "OU = Szerverek, DC = winitpro, DC = loc" -Szűrő * | % Invoke-Command-Computer $ _. Név -ScriptBlock gpupdate / force

A Get-AdComputer és a PowerShell parancsfájl bejelentkezés használatával különféle számítógépes beállításokat vezérelhet. Például figyelemmel kíséri az SCCM ügynök állapotát a felhasználók számítógépein. Amikor minden számítógép elindul, fut egy bejelentkezési szkriptet, amely a Set-ADComputer használatával menti a ccmexec szolgáltatás állapotát egy ingyenes számítógép-attribútumba - extensionAttribute10.

Ezután a következő parancs segítségével meg tudom találni azokat a számítógépeket, amelyeken a CCMExec szolgáltatás hiányzik vagy nem fut:

get-adcomputer -filter extensionAttribute10 -ne "SCCM Agent: Futás" -SearchBase “OU = Computers, OU = MSK, DC = winitpro, DC = hu” -tulajdonságok dNSHostName, extensionAttribute10, LastLogonDate | select-object dNSHostName, extensionAttribute LastLogonDate