צור דוחות מחשב ב-Active Directory עם PowerShell

צור דוחות מחשבי 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

דרישות מוקדמות

אם ברצונכם לעקוב אחר הסקריפטים בדוגמה במאמר זה, אנא ודאו שיש לכם את הפריטים הבאים:

קרא גםאיך ליצור דוחות מחשב / התקן ב-Active Directory באמצעות InfraSOSהבנת פקודת Get-ADComputer ב-Powershell

לפני שנתחיל, עלינו להתנסח עם פקודת ה-Get-ADComputer. אנחנו לא זקוקים להרשאות מנהל דומיין כדי לקבל מידע מה-Active Directory. שימוש בחשבון משתמש רגיל החבר לקבוצת המשתמשים בדומיין או בקבוצת Authenticated Users הוא מספיק.

אם נפעיל את הפקודה Get-Help, נקבל רשימה של כל הפרמטרים האחרים ל-Get-ADComputer:

$command = Get-ADComputer
Get-Help $command

פלט דוגמה:

בנוסף, אפשר לגשת לתיעוד הרשמי של הפקודה Get-ADComputer כאן .

לאחר גלילה דרך רשימת הפרמטרים הארוכה בשורת הפקודה וה-תיעוד, אפשר להתחיל בכתיבת סקריפטים. חשוב לזכור שהפרמטר הכי חשוב המלווה את פקודת ה-Get-ADComputer הוא הפרמטר ה- Identity .

כדי לקבל מידע על חשבון מחשב ספציפי בדומיין, יש להשתמש בפרמטר -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. נסיים.

סיום ייצור דוחות מחשב ב-Active Directory באמצעות Powershell

במאמר זה דנו בפקודה Get-ADComputerבאופן מקיף. למדנו שבאמצעות פקודה זו ניתן לקבל רשימה מפורטת של תכונות ומידע עבור מכשיר מסוים. בנוסף, עם רשימה מקיפה, למדנו כיצד לסנן את התכונות הללו רק כדי להשיג את המידע שאנו צריכים.

סיכום, למדנו גם כיצד להמיר שאילתה cmdlet לפקודה command שימושית יותר שנוכל להשתמש בה להעברת פקודות מרחוק. לבסוף, כעת אנו יכולים ליצור את הדו"ח שלנו reporting בפורמטים מרובים עם כל המידע הזה שנספג.

Source:
https://infrasos.com/create-active-directory-computer-reports-with-powershell/