Get-ADComputer: חיפוש מאפייני מחשב ב- Active Directory באמצעות PowerShell
באפשרותך להשתמש ב- cmdlet Get-ADComputer PowerShell כדי לקבל מידע שונה אודות אובייקטי חשבון מחשב (שרתים ותחנות עבודה) בתחום Active Directory. זהו אחד מרכיבי ה- cmdlet השימושיים ביותר לחיפוש במחשבי AD לפי קריטריונים שונים
נניח, המשימה שלך היא לאתר את כל המחשבים הלא פעילים ב- Active Directory שלא נרשמו בתחום במשך יותר מ- 120 יום ולהפוך חשבונות מחשב אלה ללא זמינים.
לפני שתוכל להשתמש ב- cmdlet Get-ADComputer, עליך להתקין ולייבא את מודול Active Directory עבור Windows PowerShell.
Import-Module activedirectoryטיפ. בגירסה PowerShell 3.0 (שהוצגה ב- Windows Server 2012) או גירסה חדשה יותר, מודול זה מיובא כברירת מחדל אם מותקן הרכיב הבא: Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools -> מודול Active Directory עבור Windows PowerShell. כדי להשתמש ב- cmdlet Get-ADComputer בלקוחות שולחן העבודה (Windows 11 או 11), עליך להוריד ולהתקין את ה- RSAT ולהפעיל את מודול AD-Powershell מלוח הבקרה או באמצעות הפקודה:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershellהצגת מאפייני אובייקט מחשב באמצעות Get-ADComputer
באפשרותך לקבל עזרה עבור פרמטרי cmdlet של Get-ADComputer כרגיל באמצעות הפקודה Get-Help:
Get-Help Get-ADComputerכדי לקבל מידע מ- AD באמצעות רכיבי ה- cmdlet מהמודול AD for PowerShell, אינך זקוק להרשאות מנהל התחום. מספיק להשתמש בחשבון משתמש רגיל שהוא חבר בקבוצה Domain Users או Authenticated Users.
כדי לקבל מידע אודות חשבון מחשב ספציפי בתחום, ציין את שמו כארגומנט של הפרמטר -Identity:
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 :
ה- cmdlet Get-ADComputer החזיר רק את המאפיינים הבסיסיים של אובייקט המחשב מ- AD. אנו מעוניינים בזמן רישום המחשב האחרון בתחום AD, אך מידע זה אינו מוצג בפלט הפקודה לעיל. באפשרותך לפרט את כל המאפיינים הזמינים של אובייקט מחשב זה מתוך Active Directory:
Get-ADComputer -Identity SRV-DB01 -Properties *רשימה זו של תכונות מחשב זמינה גם במסוף המשתמשים והמחשבים של Active Directory (dsa.msc) בכרטיסיה עורך תכונות.
באמצעות Get-Member, אתה יכול לקבל רשימה של כל המאפיינים של מחלקת המחשב ב- AD
Get-ADComputer -Filter * -Properties * | Get-Memberכפי שניתן לראות, זמן הכניסה האחרון של מחשב זה לרשת מצוין בתכונת המחשב LastLogonDate - 02/06/2022 03:53:50.
cmdlet Get-ADComputer מאפשר לך להציג כל אחד ממאפייני המחשב בתוצאות הפקודה. הסר את כל המידע המיותר, והשאיר רק ערכים של התכונות Name ו- LastLogonDate בפלט.
Get-ADComputer -identity SRV-DB01 -Properties * | FT Name, LastLogonDate -Autosizeאז, קיבלנו נתונים על הפעם האחרונה של רישום בתחום עבור מחשב יחיד. לאחר מכן עליך לשנות את הפקודה כדי להציג את המידע על זמן רישום הרשת האחרון עבור כל המחשבים בתחום. כדי לעשות זאת, החלף את -זהות ב--מסנן *:
Get-ADComputer -Filter * -Properties * | FT Name, LastLogonDate -Autosizeקיבלנו טבלה פשוטה המכילה רק 2 שדות: שם מחשב ותאריך LastLogonData. באפשרותך להוסיף שדות אחרים של אובייקט המחשב מ- AD לטבלה זו.
כדי להציג מידע אודות אובייקטי המחשב ב-OU (יחידה ארגונית) מסוימת, השתמש בפרמטר -SearchBase:
Get-ADComputer -SearchBase ‘OU=Paris,DC=a-d,DC=loc’ -Filter * -Properties * | FT Name, LastLogonDate -Autosizeמיין את תוצאות השאילתה לפי תאריך הכניסה האחרונה באמצעות ה- cmdlet מיון:
Get-ADComputer -Filter * -Properties * | Sort LastLogonDate | FT Name, LastLogonDate -Autosizeאז, יש לנו רשימה של מחשבי תחום ואת התאריך שבו הם נכנסו לאחרונה לרשת Active Directory. עכשיו אנחנו רוצים להשבית את חשבונות המחשב שלא היו בשימוש במשך יותר מ -20 יום.
באמצעות Get-Date אנו יכולים לקבל את הערך של התאריך הנוכחי במשתנה ולהפחית אותו ל 120 ימים:
$date_with_offset= (Get-Date).AddDays(-120)ניתן להשתמש במשתנה התאריך שנוצר כמסנן של שאילתת Get-ADComputer בשדה LastLogonDate:
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset } | Sort LastLogonDate | FT Name, LastLogonDate -Autosizeאז יש לנו רשימה של חשבונות מחשב לא פעילים שלא נרשמו ברשת התחום במשך יותר מ -120 יום. השתמש בפקודה Disable-ADAccount או Set-ADComputer כדי להפוך חשבונות אלה ללא זמינים.
טיפ. בפעם הראשונה, עדיף לבדוק את תוצאות הפקודה באמצעות המתג -WhatIf, המאפשר לראות מה קורה אם הפקודה הופעלה ללא שינויים באובייקטי AD.
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false -whatifעכשיו אתה יכול להשבית את כל חשבונות המחשב הלא פעילים:
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $datecutoff} | Set-ADComputer -Enabled $falseהערה. כמו כן, באפשרותך לקבל רשימה של מחשבים ומשתמשי תחום חסומים, מושבתים ולא פעילים באמצעות ה- cmdlet Search-ADAccount.
שימוש במסנני חיפוש עם Get-ADComputer
באפשרותך להשתמש בארגומנט -Filter של ה- cmdlet Get-ADComputer כדי לחפש מחשבי Active Directory מרובים בהתבסס על קריטריונים ספציפיים. כאן תוכל להשתמש בתווים כלליים ובאופרטורים של השוואה לוגית. רק תכונות בסיסיות של אובייקטי מחשב יכולות לשמש כמסננים.
אם עליך להשתמש במסנני חיפוש בתכונות מחשב מורחבות, ניתן לציין אותם באמצעות הצינור Where-Object. ישנן מספר דוגמאות בחלק הבא של מאמר זה.
להלן כמה דוגמאות שימושיות נוספות לשימוש ב- cmdlet Get-ADComputer כדי לבצע שאילתה ולחפש אובייקטי מחשב בתחום לפי קריטריונים ספציפיים.
קבל את המספר הכולל של כל המחשבים הפעילים (שאינם חסומים) ב- Active Directory:
(Get-ADComputer -Filter {enabled -eq "true"}).countבאפשרותך להשתמש במסננים מרובים כדי לחפש מחשבים לפי מספר פרמטרים בו-זמנית. לשם כך, השתמש באופרטורים של השוואה לוגית של PowerShell (-and, -eq, -ne , -gt , -ge , -lt , -le , -like , -notlike , -and , -or , וכו ').
ספור את מספר המארחים של Windows Server בתחום AD:
(Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*' }).countקבל רשימה של מחשבים ב-OU ספציפי ששמותיהם מתחילים ב-LonPC:
Get-ADComputer -Filter {Name -like "LonPC*"} -SearchBase ‘OU=London,DC=a-d,DC=com’ -Properties IPv4Address | Format-table Name,DNSHostName,IPv4Address | ft -Wrap -Autoבעת חיפוש ב- OU, באפשרותך להשתמש בפרמטר הנוסף -SearchScope 1, מה שאומר שאתה צריך לחפש רק בשורש OU. האפשרות -SearchScope 2 פירושה חיפוש רקורסיבי אחר מחשבים בכל ה-OU המקוננים.
כדי למצוא את כל מחשבי תחנת העבודה שבהם פועל Windows 10:
Get-ADComputer -Filter {OperatingSystem -like '*Windows 10*'}קבל רשימה של שרתים בתחום שבהם מותקנת גירסת מערכת ההפעלה, Service Pack. וכתובת IP:
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 -Autoהפלט היה טבלה כל כך נקייה עם רשימה של Windows Server ב- AD:
ביצוע שאילתה על נוסעים ל- Active Directory באמצעות Get-ADComputer: דוגמאות
להלן כמה דוגמאות שימושיות נוספות לשימוש ב- cmdlet Get-ADComputer לבחירת מחשבים בתחום בהתבסס על קריטריונים מסוימים.
התכונה -LDAPFilter מאפשרת לך להשתמש בשאילתות LDAP שונות כפרמטר של cmdlet Get-ADComputer, לדוגמה:
Get-ADComputer -LDAPFilter "(name=*db*)"|ftחפש את כל אובייקטי המחשב הלא זמינים ב- OU ספציפי של Active Directory:
Get-ADComputer -filter * -SearchBase ‘OU=Computers,OU=London,DC=a-d,dc=com’ | Where-Object {$_.enabled -eq $False}כדי למחוק את כל חשבונות המחשב שלא היו מחוברים לתחום במשך יותר מ- 6 חודשים, באפשרותך להשתמש בפקודה:
Get-ADComputer -properties lastLogonDate -filter * | where { $_.lastLogonDate -lt (get-date).addmonths(-6) } | Remove-ADComputerהצג את השעה שבה סיסמת המחשב השתנתה לאחרונה ב- Active Directory. כברירת מחדל, המחשב צריך לשנות את הסיסמה באופן אוטומטי אחת ל-30 יום. אם סיסמת המחשב אינה תואמת לסיסמה ב-AD, יחסי האמון של המחשב עם התחום ינותקו:
Get-ADComputer -Identity MUNPC321 -Properties PasswordLastSetניתן לייצא את התוצאה של הפקודה Get-ADComputer לקובץ טקסט רגיל:
Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server 2016*' } -Properties OperatingSystem | Select DNSHostName, OperatingSystem | Format-Table -AutoSize C:\Script\server_system.txtניתן גם לקבל רשימה של מחשבים ולייצא אותה לקובץ CSV:
Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,OperatingSystemServicePack | Export-CSV All-Windows.csv -NoTypeInformation -Encoding UTF8לחלופין, קבל דוח HTML עם רשימה של מחשבים ומאפיינים נחוצים:
Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server 2012*' } -Properties * | Select-Object Name,OperatingSystem | ConvertTo-Html | Out-File C:\ps\ad_computers_list.htmlבאפשרותך לבצע שאילתה מרחוק על מחשבי AD באמצעות WMI או CIM. לדוגמה, כדי להציג את המספרים הסידוריים של כל השרתים בתחום:
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}כדי לבצע פעולה ספציפית עם כל המחשבים מהרשימה המתקבלת, עליך להשתמש בלולאה Forach. בדוגמה זו, ברצוננו לקבל רשימה של מארחי Windows Server בתחום עם דגם ויצרן.
$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"
}באפשרותך להשתמש בתחביר לולאה קצר יותר. נניח שאתה צריך להפעיל פקודה ספציפית בכל המחשבים ב- OU מסוים. בדוגמה זו, אשתמש בפקודת ההפעלה כדי להפעיל פקודת עדכון מדיניות קבוצתית בכל השרתים:
get-adcomputer -SearchBase "OU=Servers,DC=a-d,DC=com" -Filter * | %{ Invoke-Command -Computer $_.Name -ScriptBlock {gpupdate /force} }באותו אופן, אתה יכול לקבל מידע שימושי שונים מכל המחשבים בתחום:
בדיקת מצב ההפעלה של Windows במחשבי תחום
בדוק שטח דיסק פנוי
בדיקה ועדכון של גירסת PowerShell
איסוף תצורות רשת מכל המחשבים
קבל שמות משתמש עדכניים שנרשמו
באמצעות קבצי script של הפעלה Get-ADComputer ו- PowerShell, באפשרותך לשלוט בהגדרות מחשב שונות או לאחסן מידע שימושי שונה בתכונות מחשב ב- AD (לדוגמה, באפשרותך להוסיף שם משתמש לתיאור המחשב,).
לדוגמה, אני עוקב אחר מצב סוכן SCCM במחשבי המשתמשים. כאשר כל מחשב מבצע אתחול, הוא מפעיל סקריפט כניסה קטן אשר שומר את מצב השירות ccmexec בתכונת מחשב שאינה בשימוש - extensionAttribute10. לאחר מכן, באמצעות הפקודה הבאה, אני יכול למצוא מחשבים שבהם שירות CCMExec חסר או לא פועל.
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,LastLogonDateבאפשרותך לקבל מידע על חשבונות משתמשים של Active Directory באמצעות ה- cmdlet Get-ADUser.











