Get-ADComputer: Keresse meg a számítógép tulajdonságait az Active Directoryban a PowerShell segítségével
A Get-ADComputer PowerShell-parancsmag segítségével különféle információkat szerezhet be az Active Directory-tartomány számítógépfiók-objektumairól (kiszolgálókról és munkaállomásokról). Ez az egyik leghasznosabb parancsmag az AD-számítógépek különféle kritériumok szerinti kereséséhez
Tegyük fel, hogy az Ön feladata az összes olyan inaktív számítógép megkeresése az Active Directoryban, amelyek több mint 120 napja nem regisztráltak egy tartományban, és tiltsa le ezeket a számítógépfiókokat.
A Get-ADComputer parancsmag használata előtt telepítenie és importálnia kell a Windows PowerShell Active Directory modulját.
Import-Module activedirectoryTipp. A PowerShell 3.0 (a Windows Server 2012 rendszerben bevezetett) vagy újabb verziójában ez a modul alapértelmezés szerint importálva van, ha a következő összetevő telepítve van: Távoli kiszolgálófelügyeleti eszközök -> Szerepkör-felügyeleti eszközök -> AD DS és AD LDS eszközök -> Active Directory modul a Windows PowerShellhez. A Get-ADComputer parancsmag asztali klienseken (Windows 11 vagy 11) való használatához le kell töltenie és telepítenie kell az RSAT-t, és engedélyeznie kell az AD-Powershell modult a Vezérlőpultról vagy a következő paranccsal:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-PowershellSorolja fel a számítógépobjektum tulajdonságait a Get-ADComputer segítségével
A Get-ADComputer parancsmag paramétereihez a szokásos módon a Get-Help paranccsal kaphat segítséget:
Get-Help Get-ADComputerHa az AD for PowerShell-modulból származó parancsmagokkal szeretne információkat kapni az AD-től, nem kell rendelkeznie a tartományi rendszergazdai jogosultságokkal. Elegendő egy normál felhasználói fiók használata, amely tagja a Domain-felhasználók vagy a Authenticated Users csoportnak.
Ha információt szeretne kapni egy adott számítógépfiókról a tartományban, adja meg a nevét az -Identity paraméter argumentumaként:
Get-ADComputer -Identity SRV-DB01DistinguishedName : CN=SRV-DB01,OU=Servers,OU=London,OU=UK,DC=a-d,DC=com
DNSHostName : SRV-DB01.a-d.site
Enabled : True
Name : SRV-DB01
ObjectClass : computer
ObjectGUID : 87654321-1234-5678-0000-123412341234
SamAccountName : SRV-DB01$
SID : S-1-5-21-123456780-1234567890-0987654321-1234
UserPrincipalName :
A Get-ADComputer parancsmag csak a Computer objektum alapvető tulajdonságait adta vissza az AD-ből. Érdekel bennünket az utolsó számítógép regisztráció ideje az AD tartományban, de ez az információ nem jelenik meg a fenti parancs kimenetében. Felsorolhatja ennek a számítógépes objektumnak az összes elérhető tulajdonságát az Active Directoryból:
Get-ADComputer -Identity SRV-DB01 -Properties *A számítógép-attribútumok listája az Active Directory felhasználók és számítógépek konzolján (dsa.msc) is elérhető az Attribútumszerkesztő lapon.
A Get-Member használatával listát kaphat az AD Computer osztály összes tulajdonságáról
Get-ADComputer -Filter * -Properties * | Get-MemberAmint láthatja, ennek a számítógépnek a hálózatba való utolsó bejelentkezési idejét a számítógép LastLogonDate - 2022.06.02. 3:53:50 attribútuma határozza meg.
A Get-ADComputer parancsmag lehetővé teszi a számítógép bármely tulajdonságának megjelenítését a parancseredmények között. Távolítson el minden felesleges információt, és csak a Name és a LastLogonDate attribútumok értékeit hagyja meg a kimenetben.
Get-ADComputer -identity SRV-DB01 -Properties * | FT Name, LastLogonDate -AutosizeÍgy egyetlen számítógépre vonatkozóan kaptunk adatokat a domain utolsó regisztrációjának időpontjáról. Ezután módosítania kell a parancsot, hogy a tartományban lévő összes számítógépen megjelenítse az utolsó hálózati regisztráció idejére vonatkozó információkat. Ehhez cserélje ki az -Identity kifejezést a -Szűrő * kifejezésre:
Get-ADComputer -Filter * -Properties * | FT Name, LastLogonDate -AutosizeKaptunk egy egyszerű táblázatot, amely csak 2 mezőt tartalmaz: a számítógép nevét és a LastLogonData dátumát. Ehhez a táblázathoz hozzáadhatja a Computer objektum egyéb mezőit az AD-ből.
Egy adott szervezeti egység (OU) számítógépes objektumaira vonatkozó információk megjelenítéséhez használja a -SearchBase paramétert:
Get-ADComputer -SearchBase ‘OU=Paris,DC=a-d,DC=loc’ -Filter * -Properties * | FT Name, LastLogonDate -AutosizeRendezze a lekérdezés eredményeit az utolsó bejelentkezés dátuma szerint a Rendezésparancsmag segítségével:
Get-ADComputer -Filter * -Properties * | Sort LastLogonDate | FT Name, LastLogonDate -AutosizeTehát megkaptuk a tartományi számítógépek listáját és azt a dátumot, amikor utoljára bejelentkeztek az Active Directory hálózatba. Most szeretnénk letiltani azokat a számítógépes fiókokat, amelyeket több mint 20 napja nem használtak.
A Get-Date használatával megkaphatjuk az aktuális dátum értékét a változóban, és csökkenthetjük azt 120 napra:
$date_with_offset= (Get-Date).AddDays(-120)Az eredményül kapott dátumváltozó használható a Get-ADComputer lekérdezés szűrőjeként a LastLogonDate mezőben:
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset } | Sort LastLogonDate | FT Name, LastLogonDate -AutosizeÍgy kaptunk egy listát azokról az inaktív számítógépes fiókokról, amelyeket több mint 120 napja nem regisztráltak a tartományi hálózaton. Használja a Disable-ADAccount vagy a Set-ADComputer parancsot a fiókok letiltásához.
Tipp. Az első alkalommal jobb, ha a parancs eredményét teszteli a -WhatIf kapcsolóval, amely lehetővé teszi, hogy megnézze, mi történik, ha a parancsot az AD-objektumok módosítása nélkül futtatják.
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false -whatifMost már letilthatja az összes inaktív számítógépfiókot:
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $datecutoff} | Set-ADComputer -Enabled $falseMegjegyzés. Ezenkívül a Search-ADAccount parancsmag segítségével lekérheti a letiltott, letiltott és inaktív számítógépek és tartományfelhasználók listáját.
Keresési szűrők használata a Get-ADComputerrel
A Get-ADComputer parancsmag -Filter argumentumával több Active Directory-számítógépet kereshet meghatározott feltételek alapján. Itt helyettesítő karaktereket és logikai összehasonlító operátorokat használhat. Csak alapvető számítógépes objektum attribútumok használhatók szűrőként.
Ha keresési szűrőket kell használnia kiterjesztett számítógép-attribútumokon, akkor azokat a Where-Object cső segítségével adhatja meg. A cikk következő részében számos példa található.
Az alábbiakban néhány hasznosabb példa található a Get-ADComputer parancsmag használatával a tartomány számítógépes objektumaiban meghatározott feltételek alapján történő lekérdezéshez és kereséshez.
Az Active Directoryban található összes aktív (feloldott) számítógép teljes számának lekérése:
(Get-ADComputer -Filter {enabled -eq "true"}).countTöbb szűrő használatával egyszerre több paraméter alapján kereshet számítógépeket. Ehhez használjon PowerShell logikai összehasonlító operátorokat (-and, -eq, -ne , -gt , -ge , -lt , -le , -like , -notlike , -and , -or , stb.).
Számolja meg az AD tartományban lévő Windows Server gazdagépek számát:
(Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*' }).countSzerezze meg az adott szervezeti egységben található számítógépek listáját, amelyek neve LonPC-vel kezdődik:
Get-ADComputer -Filter {Name -like "LonPC*"} -SearchBase ‘OU=London,DC=a-d,DC=com’ -Properties IPv4Address | Format-table Name,DNSHostName,IPv4Address | ft -Wrap -AutoHa az OU-ban keres, használhatja a -SearchScope 1 kiegészítő paramétert, ami azt jelenti, hogy csak a gyökér szervezeti egységben kell keresnie. A -SearchScope 2 opció a számítógépek rekurzív keresését jelenti az összes beágyazott szervezeti egységben.
A Windows 10 rendszert futtató munkaállomások megkeresése:
Get-ADComputer -Filter {OperatingSystem -like '*Windows 10*'}Szerezze meg a tartományban található kiszolgálók listáját az operációs rendszer verziójával, a szervizcsomaggal. és IP cím:
Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -Properties Name,Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack,IPv4Address | Sort-Object -Property Operatingsystem | Select-Object -Property Name,Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address| ft -Wrap -AutoA kimenet egy ilyen tiszta táblázat volt a Windows Server listájával az AD-ben:
Az Active Directory ingázók lekérdezése a Get-ADComputer segítségével: Példák
Az alábbiakban néhány hasznosabb példa található a Get-ADComputer parancsmag használatával a tartomány számítógépeinek bizonyos kritériumok alapján történő kiválasztására.
Az -LDAPFilter attribútum lehetővé teszi különböző LDAP-lekérdezések használatát a Get-ADComputer parancsmag paramétereként, például:
Get-ADComputer -LDAPFilter "(name=*db*)"|ftAz összes letiltott számítógép-objektum megkeresése egy adott Active Directory szervezeti egységben:
Get-ADComputer -filter * -SearchBase ‘OU=Computers,OU=London,DC=a-d,dc=com’ | Where-Object {$_.enabled -eq $False}Az összes olyan számítógépes fiók törléséhez, amely több mint 6 hónapja nem jelentkezett be a tartományba, használja a következő parancsot:
Get-ADComputer -properties lastLogonDate -filter * | where { $_.lastLogonDate -lt (get-date).addmonths(-6) } | Remove-ADComputerJelenítse meg a számítógép jelszavának legutóbbi módosításának időpontját az Active Directoryban. Alapértelmezés szerint a jelszót a számítógépnek 30 naponként automatikusan meg kell változtatnia. Ha a számítógép jelszava nem egyezik az AD jelszavával, a számítógép és a tartomány közötti bizalmi kapcsolat megszakad:
Get-ADComputer -Identity MUNPC321 -Properties PasswordLastSetA Get-ADComputer parancs eredménye egyszerű szöveges fájlba exportálható:
Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server 2016*' } -Properties OperatingSystem | Select DNSHostName, OperatingSystem | Format-Table -AutoSize C:\Script\server_system.txtEzenkívül beszerezheti a számítógépek listáját, és exportálhatja CSV-fájlba:
Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,OperatingSystemServicePack | Export-CSV All-Windows.csv -NoTypeInformation -Encoding UTF8Vagy kérjen egy HTML-jelentést a számítógépek listájával és a szükséges tulajdonságokkal:
Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server 2012*' } -Properties * | Select-Object Name,OperatingSystem | ConvertTo-Html | Out-File C:\ps\ad_computers_list.htmlTávolról lekérdezhet AD-számítógépeket WMI-n vagy CIM-en keresztül. Például a tartományban lévő összes szerver sorozatszámának megjelenítéséhez:
Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' | Select-Object Name | Foreach-Object {Get-CimInstance Win32_Bios -ComputerName $_.Name -ErrorAction SilentlyContinue | Select-Object PSComputerName,SerialNumber}Ha egy adott műveletet szeretne végrehajtani az eredményül kapott listán szereplő összes számítógépen, a Foreach hurkot kell használnia. Ebben a példában szeretnénk lekérni a tartományban található Windows Server-állomások listáját modellel és gyártóval.
$Computers = Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*'}
Foreach ($Computer in $Computers)
{
$Hostname = $Computer.Name
$ComputerInfo = (Get-WmiObject -Computername $Hostname Win32_ComputerSystem)
$Manufacturer = $Computer.Manufacturer
$Model = $Computer.Model
Write-Host "Name: $Hostname"
Write-Host "Manufacturer: $Manufacturer"
Write-Host "Model: $Model"
Write-Host " "
$Content = "$Hostname;$Manufacturer;$Model"
Add-Content -Value $Content -Path "C:\PS\ServersInfo.txt"
}Használhat rövidebb ciklusszintaxist. Tegyük fel, hogy egy adott parancsot kell futtatnia egy adott szervezeti egység összes számítógépén. Ebben a példában az Invoke-Command parancsot fogom használni egy csoportházirend-frissítési parancs futtatásához az összes kiszolgálón:
get-adcomputer -SearchBase "OU=Servers,DC=a-d,DC=com" -Filter * | %{ Invoke-Command -Computer $_.Name -ScriptBlock {gpupdate /force} }Ugyanígy különféle hasznos információkat kaphat a tartomány összes számítógépéről:
Ellenőrizze a Windows aktiválási állapotát a tartományi számítógépeken
Ellenőrizze a szabad lemezterületet
Ellenőrizze és frissítse a PowerShell verzióját
Gyűjtse össze a hálózati konfigurációkat az összes számítógépről
Az aktuális bejelentkezett felhasználónevek lekérése
A Get-ADComputer és a PowerShell indítási parancsfájlok segítségével különféle számítógépbeállításokat vezérelhet, vagy különféle hasznos információkat tárolhat az AD számítógép attribútumaiban (például hozzáadhat egy felhasználónevet a számítógép leírásához).
Például figyelem az SCCM ügynök állapotát a felhasználók számítógépein. Amikor minden számítógép elindul, lefuttat egy kis bejelentkezési szkriptet, amely elmenti a ccmexec szolgáltatás állapotát egy nem használt számítógépattribútumba - extensionAttribute10. Ezután a következő paranccsal megkereshetem azokat a számítógépeket, amelyeken hiányzik vagy nem fut a CCMExec szolgáltatás.
get-adcomputer -filter {extensionAttribute10 -ne "SCCM Agent:Running"} -SearchBase “OU=Compters,OU=London,DC=a-d,DC=com” -properties dNSHostName,extensionAttribute10,LastLogonDate |select-object dNSHostName,extensionAttribute10,LastLogonDateAz Active Directory felhasználói fiókjaira vonatkozó információkat a Get-ADUser parancsmag segítségével szerezheti be.











