צור דוחות מחשבי Active Directory באמצעות PowerShell. כדי למצוא כל דבר בנוגע לאובייקטי מחשב של Active Directory (AD) ולתכונותיהם, נשתמש בעיקר ב-Get-ADComputer cmdlet. לדוגמה, בתחום של Active Directory domain, אנו יכולים להשתמש ב-Get-ADComputer PowerShell cmdlet כדי לקבל מידע על אובייקטי חשבון מחשב (שרתים ותחנות עבודה). פקודת זו היא אחת הכי שימושיות לחיפוש אחר מחשבים ב-AD לפי קריטריונים שונים.
מאמר זה מדבר על השימושים הרבים של Get-ADComputer cmdlet וכיצד אנו יכולים להפוך אותו לדוח מקיף ושווה ערך.
בואו נתחיל עם המאמר בבלוג צור דוחות מחשבי Active Directory באמצעות PowerShell.
צור דיווחי מחשבי Active Directory באמצעות Powershell
דרישות מוקדמות
אם ברצונכם לעקוב אחר הסקריפטים בדוגמה במאמר זה, אנא ודאו שיש לכם את הפריטים הבאים:
- סביבת AD עם לפחות מחשב תחבורה מצורפת.
- רמת פונקציות התחום – Windows Server 2016.
- כלי ניהול שרת מרוחק (RSAT) עבור Active Directory מותקן על התחבורה המצורפת לתחום שלכם.
- הגרסה האחרונה של PowerShell, או לפחות PowerShell 7.x ומעלה, נדרשת כדי לבצע את התסריטים.אז איך ליצור דוחות מחשבים ב-Active Directory בעזרת PowerShell? בואו נגלה.
אם נפעיל את הפקודה Get-Help, נקבל רשימה של כל הפרמטרים האחרים ל-Get-ADComputer:
$command = Get-ADComputer
Get-Help $command
פלט דוגמה:
בנוסף, אפשר לגשת לתיעוד הרשמי של הפקודה Get-ADComputer כאן .
כדי לקבל מידע על חשבון מחשב ספציפי בדומיין, יש להשתמש בפרמטר -Identity עם שמו כארגומנט:
Get-ADComputer -Identity DC01
כאן דוגמה לפלט:
DistinguishedName : CN=DC01,OU=Servers,OU=DC,OU=IT,DC=infrasos,DC=com
DNSHostName : DC01.infrasos.com
Enabled : True
Name : DC01
ObjectClass : computer
ObjectGUID : 87654321-1204-5578-0000-123462341264
SamAccountName : DC01
SID : S-1-5-21-123656780-1234667890-0986654321-1264
כתוצאה, ה-Get-ADComputer cmdlet החזיר רק את המאפיינים היסודיים של אובייקט המחשב מ-AD. אך, בביצוע הפקודה למעלה מספק רק את המידע ברמת העליון על אובייקט המחשב. לכן, אם נרצה לחפש עמוק יותר ולהציג את המאפיינים הזמינים של האובייקט, נוכל להשתמש בפרמטר -Properties.
כדי לרשום את כל המאפיינים של האובייקט, יש להוסיף את הפרמטר -Properties ולהוסיף ערך של כוכבית (*). ערך הכוכבית הוא ערך כללי המציין את הכל:
Get-ADComputer -Identity DC01 -Properties *
דוגמה לפלט:
מצד שני, נוכל לנווט בתוך קונסולת משתמשי ומחשבים פעילה (או dsa.msc) ולהציג את המאפיינים משם. לבסוף, בחר אובייקט מחשב ונווט אל הלשונית עורך המאפיינים כדי להציג את רשימת מאפייני אובייקט המחשב.
סינון תוצאות Get-ADComputer
אחד החסרונות הוא שאנו עשויים להציג מידע נוסף על דברים שאין בהכרח צורך בהם. באמצעות צינור ה-PowerShell, ה-cmdlet Get-ADComputer מאפשר לנו להציג מאפייני מחשב מסוימים בשורת הפקודה. לדוגמה, אנו יכולים להשאיר רק ערכים של שם ו-תאריך_כניסה_אחרון בפלט על ידי שימוש בצינור ה-Format-Table: הממשק הראשי לפקודה.
Get-ADComputer -Identity DC01 -Properties * | Format-Table Name, LastLogonDate -Autosize
פלט דוגמה:
כאן, Windows PowerShell מחשב רוחבי עמודות על סמך הנתונים המוצגים בפועל אם נציין את הפרמטר AutoSize כאשר אנו מפעילים את הפקודה של Format-Table. בסופו של דבר, הפרמטר הזה עושה את העמודות נקראות.
אך, הפקודה הקודמת חיפשה רק אובייקט מחשב אחד ב-AD. לכן, אם רצינו מידע על כל המחשבים בתחום, נוכל להחליף את הפרמטר זהות ב-מסנן:
Get-ADComputer -Filter * -Properties * | Format-Table Name, Created -Autosize
ראה את הפלט הדוגמא:
קיבלנו טבלה מודפסת בצורה פשוטה המכילה רק שני שדות: שם המחשב ותאריך יצירת האובייקט. אנו יכולים להוסיף עמודות נוספות של אובייקט המחשב מ-AD לטבלה הזו על ידי הוספת תכונות בחלק של Format-Table בזרימת הפלט.
בעיקרון, כדי להשיג מידע על אובייקטי מחשב ביחידה ארגונית מסוימת (Organizational Unit) (OU), אנו יכולים להשתמש בפרמטר –SearchBase:
Get-ADComputer -SearchBase ‘OU=IT,DC=infrasos,DC=com’ -Filter * -Properties * | Format-Table Name, Created -Autosize
חוץ מזה, אנו יכולים גם לסדר את תוצאות החיפוש על ידי הכנסת Sort-Object cmdlet בתוך הזרם:
Get-ADComputer -Filter * -Properties * | Sort-Object Created | Format-Table Name, Created -Autosize
בפקודה הקודמת למעלה, הSort-Object מסדר את התוצאות של הGet-ADComputer קודם על ידי Created ואז מעביר אותו לFormat-Table להצגה.
שימוש בפילטרי חיפוש עם Get-ADComputer
אנו משתמשים בGet-ADComputer cmdlet של -Filter טיעון לחיפוש רבים AD מחשבים על פי קריטריונים ספציפיים. כפי שנאמר, אנו יכולים להשתמש בכוכביות ובמפעילי השוואה לוגיים במקרה זה. בוודאי, כפילטרים, אנו יכולים להשתמש רק בתכונות העצם הראשוני של אובייקטי המחשב.
באופן שווה, אנו משתמשים בצינור Where-Object אם אנו צריכים להשתמש בפילטרים חיפוש על תכונות מחשב מורחבות. הנה מספר דוגמאות מעשיות נוספות לאיך לבדוק ולחפש אובייקטים מחשב בתחום באמצעות הפקודה Get-ADComputer.
קבל את המספר הכולל של כל המחשבים הפעילים והלא מושהים ב Active Directory:
אנו מחפשים מחשבים באמצעות מספר פילטרים בבת אחת. השתמש ב-PowerShell אופרטורי השוואה היגיוניים כדי להשיג זאת.
(Get-ADComputer -Filter {Enabled -eq "true"}).Count
הצג את כל מארחי שרתי Windows בתחום AD:
Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*' }
קבל רשימה של כל המחשבים ב-OU ספציפי ששמם מתחיל ב-DC:
Get-ADComputer -Filter {Name -like "DC*"} -SearchBase ‘OU=IT,DC=infrasos,DC=com’ -Properties * | Format-Table Name
כאשר מחפשים ב-OU, אנו יכולים להשתמש ב-SearchScope1 פרמטר כדי להגביל את החיפוש שלנו ל-OU השורש בלבד. ה -SearchScope2 אפשרות מבצעת חיפוש ממעקב עבור מחשבים בכל OUs.
ניהול מספר מחשבים עם Get-ADComputer
עלינו להשתמש ב Foreach-Object לולאה כדי לבצע פעולה ספציפית על כל המחשבים ברשימה המתקבלת. בדוגמה זו, אנו יכולים לשאול מספר מחשבים ב-AD מרחוק באמצעות Windows Management Instrumentation או Common Information Classes:
Get-ADComputer -Filter * -Property * |
Select-Object Name,OperatingSystem |
Foreach-Object {
Get-CimInstance Win32_Bios -ComputerName $_.Name -ErrorAction SilentlyContinue |
Select-Object PSComputerName
}
ללא ספק, בדוגמה זו, אם אנו רוצים רשימה של מארחי שרתי Windows בתחום, יחד עם מודלם ויצרן, אנו משתמשים בשיטת הלולאה הזו ומשאילים את המאפיינים של המחשב.
$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-Output "Name: $Hostname"
Write-Output "Manufacturer: $Manufacturer"
Write-Output "Model: $Model"
Write-Output " "
}
אז, המידע שהתקבל מהדוגמאות הנ"ל זמין בקלות דרך שירותי התחום מאחר ומחשבים אלו הם חלק מ AD. עם זאת, לא כל המחשבים מפרסמים את המאפיינים שלהם לתחום. איך נוכל להשיג אותם?
לאחר מכן, אנו משתמשים בInvoke-Command. לכן, פקודת PowerShell זו מבצעת פקודות מקומיות על המחשב הרחוק. לדוגמה, נניח שאנו זקוקים להריץ פקודה ספציפית על כל המחשבים בOU מסוים. בדוגמה זו, בואו נשתמש בInvoke-Command כדי להריץ פקודת מדיניות קבוצה עדכון על כל השרתים:
Get-ADComputer -SearchBase "OU=DC,DC=infrasos,DC=com" -Filter * |
%{ Invoke-Command -Computer $_.Name -ScriptBlock { gpupdate /force } }
יצא PowerShell AD Reports עם Get-ADComputer
ב-Windows PowerShell, אנו יוצאים את תוצאות הפקודות שלנו לפורמטים דו"ח מרובים. הנה כמה דוגמאות למטה.
ראשית, אנו יוצאים את תוצאת הפקודה Get-ADComputer לקובץ טקסט:
Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server 2019*' } -Properties * |
Select Name, OperatingSystem |
Format-Table -AutoSize C:\Temp\2019_servers.txt
שנית, אנו גם מקבלים רשימה של כל המחשבים ומייצאים אותה לקובץ עם פיסוקים(CSV):
Get-ADComputer -Filter * -Property * |
Select-Object Name,OperatingSystem |
Export-CSV All-Computers.csv -NoTypeInformation
שלישית, אנו יכולים גם לייצא את הדוח שלנו ולקבל פורמט דף אינטרנט HTML עם רשימה של כל המחשבים ותכונות חיוניות:
Get-ADComputer -Filter * -Properties * |
Select-Object Name,OperatingSystem |
ConvertTo-Html |
Out-File C:\ps\ad_all_computers.html
זה צריך להיראות משהו כזה:
תודה שקראת Create Active Directory Computer Reports with PowerShell. נסיים.
קרא גם לפרוס מעקב אחר Azure AD
סיום ייצור דוחות מחשב ב-Active Directory באמצעות Powershell
במאמר זה דנו בפקודה Get-ADComputerבאופן מקיף. למדנו שבאמצעות פקודה זו ניתן לקבל רשימה מפורטת של תכונות ומידע עבור מכשיר מסוים. בנוסף, עם רשימה מקיפה, למדנו כיצד לסנן את התכונות הללו רק כדי להשיג את המידע שאנו צריכים.
Source:
https://infrasos.com/create-active-directory-computer-reports-with-powershell/