כיצד למלא באופן אוטומטי את תיאור המחשב ב- Active Directory
באפשרותך לאחסן מידע שימושי שונים בתיאור של אובייקטי מחשב ב- Active Directory. לדוגמה, מידע אודות דגם המחשב, מלאי החומרה או שם המשתמש האחרון שנכנס. במאמר זה, נבחן כיצד למלא ולעדכן מידע באופן אוטומטי בשדה תיאור של אובייקטי מחשב ב- Active Directory באמצעות PowerShell.
עדכון שדה תיאור המחשב ב- Active Directory באמצעות PowerShell
לדוגמה, ברצונך שהשדה תיאור עבור מחשבים ושרתים במסוף המשתמשים והמחשבים של Active Directory יציג מידע אודות היצרן, הדגם והמספר הסידורי של המחשב. באפשרותך לקבל מידע זה במחשב המקומי שלך מ- WMI באמצעות הפקודה הבאה של PowerShell:
Get-WMIObject Win32_ComputerSystemProduct | Select Vendor, Name, IdentifyingNumberשאילתת WMI מחזירה את הנתונים הבאים:
ספק - HP
שם - Proliant DL 360 G5
-
IdentifyingNumber - CZJ733xxxx
קבל את שם המחשב הנוכחי ממשתנה הסביבה והקצה אותו ל-
$computerמשתנה:
$computer = $env:COMPUTERNAMEלאחר מכן שמור את המידע אודות חומרת המחשב:
$computerinfo= Get-WMIObject Win32_ComputerSystemProduct
$Vendor = $computerinfo.vendor
$Model = $computerinfo.Name
$SerialNumber = $computerinfo.identifyingNumberבואו נראה אילו ערכים מוקצים למשתנים:
$computer
$vendor
$Model
$SerialNumberנותר לכתוב את הנתונים שהתקבלו בשדה תיאור של חשבון המחשב ב- Active Directory. הפעל את קובץ ה-script הבא של PowerShell:
$ComputerSearcher = New-Object DirectoryServices.DirectorySearcher
$ComputerSearcher.SearchRoot = "LDAP://$("DC=$(($ENV:USERDNSDOMAIN).Replace(".",",DC="))")"
$ComputerSearcher.Filter = "(&(objectCategory=Computer)(CN=$Computer))"
$computerObj = [ADSI]$ComputerSearcher.FindOne().Path
$computerObj.Put( "Description", "$vendor|$Model|$SerialNumber" )
$computerObj.SetInfo()באפשרותך גם לבצע שינויים בתיאור המחשב באמצעות cmdlet Set-ADComputer. עם זאת, פעולה זו דורשת התקנה של מודול Active Directory עבור Windows PowerShell (מתוך ערכת הכלים לניהול RSAT) במחשב.
Set-ADComputer $computer -Description "$vendor|$Model|$SerialNumber”אם ברצונך להשתמש ברכיבי ה- cmdlet ממודול AD PowerShell, באפשרותך להעתיק את קבצי המודול לכל המחשבים מבלי להתקין RSAT.
ודא שהשדה תיאור המחשב במסוף ADUC מציג את פרטי היצרן והדגם.
סקריפט כזה יעדכן רק את תכונת תיאור המחשב הנוכחית ב- AD. באפשרותך לאכלס מרחוק תיאורים עבור כל מחשבי התחום באמצעות Get-ADComputer ו-
foreachלולאה. אבל הרבה יותר נוח שמחשבים יעדכנו את המידע שלהם באופן אוטומטי באלצהיימר כאשר משתמש נכנס או מחשב מאתחל.
לשם כך, עליך ליצור מדיניות קבוצתית עם קובץ script לכניסה של PowerShell ולהחיל אותה על כל המחשבים:
פתח את מסוף ניהול המדיניות הקבוצתית של התחום (
gpmc.msc), ליצור GPO ולהקצות אותו OU עם מחשבים;
הרחב את GPO: תצורת משתמש -> מדיניות -> הגדרות Windows -> סקריפטים (כניסה/התנתקות) -> כניסה;
עבור אל הכרטיסיה קבצי Script של PowerShell;
לחץ על הלחצן הצג קבצים וצור קובץ FillCompDesc.ps1 עם הקוד הבא:
write information about the computer hardware/model in the Description field in Active Directory $computer = $env:COMPUTERNAME $computerinfo= Get-WMIObject Win32_ComputerSystemProduct $Vendor = $computerinfo.vendor $Model = $computerinfo.Name $SerialNumber = $computerinfo.identifyingNumber $DNSDOMAIN= (Get-WmiObject -Namespace root\cimv2 -Class Win32_ComputerSystem).Domain $ComputerSearcher = New-Object DirectoryServices.DirectorySearcher $ComputerSearcher.SearchRoot = "LDAP://$("DC=$(($DNSDOMAIN).Replace(".",",DC="))")" $ComputerSearcher.Filter = "(&(objectCategory=Computer)(CN=$Computer))" $computerObj = [ADSI]$ComputerSearcher.FindOne().Path $computerObj.Put( "Description", "$vendor|$Model|$SerialNumber" ) $computerObj.SetInfo()באפשרותך לרשום פעולות script של PowerShell ביומן רישום לצורך פתרון בעיות קל יותר.
-
לחץ על הלחצן הוסף והגדר את פרמטרי הסקריפט הבאים:
שם הסקריפט:FillCompDesc.ps1פרמטרים של סקריפט:
-ExecutionPolicy Bypassבמקרה זה, אין צורך לשנות את הגדרות מדיניות הביצוע של PowerShell או לחתום על קובץ הסקריפט PS1 שלכם כדי להפעיל את קובץ ה-script של PowerShell.
הקצה הרשאות AD ל-OU ספציפי עבור קבוצת התחום משתמשים מאומתים. הקצה זכויות לשינוי התכונה Description של כל אובייקטי המחשב ב- OU (ה-
Write Descriptionרשות). פעולה זו תאפשר למשתמשי תחום ולמחשבים לשנות את הערך בתכונה תיאור של אובייקטי מחשב;
לאחר הפעלה מחדש של מחשבים ב-OU היעד ועדכון הגדרות המדיניות הקבוצתית, השדה תיאור ב-AD ימולא באופן אוטומטי. שדה זה יכיל מידע אודות חומרת המחשב. באפשרותך לפתור בעיות ב- GPO באמצעות
gpresultאו שימוש בעצות מתוך המאמר בעיות נפוצות הגורמות למדיניות קבוצתית לא חלה.
לכן, באפשרותך להוסיף כל מידע בשדה תיאור של אובייקטי המחשב ב- AD. לדוגמה, שם המשתמש המחובר האחרון, המחלקה (תוכל לקבל מידע זה באמצעות ה- cmdlet Get-ADUser), כתובת ה- IP של המחשב או כל מידע רלוונטי אחר הדרוש לך.
הערה. החיסרון של גישה זו הוא שכל משתמש AD מאומת יכול לשנות או למחוק את התיאור של כל מחשב ב- Active Directory.
הוספת שם המשתמש האחרון שנכנס למחשב תיאור ב-AD
ניתן להשתמש בקובץ ה-script של PowerShell לעיל כדי להוסיף כל מידע אחר לתיאור אובייקטי המחשב ב- AD. לדוגמה, אפשרות זו שימושית כאשר תיאור המחשב מציג את המשתמש המחובר כעת. בוא נוסיף גם את שם בקר התחום שהמשתמש מאומת אליו (
LOGONSERVER).
שנה שורה בודדת בקובץ ה-script לכניסה של PowerShell ל:
$computerObj.Put("Description","$vendor|$Model|$SerialNumber|$env:username|$env:LOGONSERVER")התנתק והיכנס תחת חשבון המשתמש שלך. ודא שתכונת תיאור המחשב מציגה כעת את שם המשתמש הנוכחי ואת logonserver (בקר תחום) שאליו אימתת.
כדי לנתח את הנתונים מהתכונה תיאור, באפשרותך להשתמש בקוד PowerShell הבא:
$ComputerName = 'PC-MUN22s7b2'
$vendor,$Model,$SerialNumber,$Username,$LogonServer = ((Get-ADComputer -identity $ComputerName -Properties *).description).split("|")פיצלנו את ערך השדה תיאור (מופרד על-ידי | ) למספר משתנים נפרדים. כדי לקבל את שם המשתמש במחשב המרוחק שצוין, פשוט הפעל:
$Usernameבאפשרותך לקבל את שם המחשב שמשתמש ספציפי מחובר אליו כעת באמצעות קובץ ה-script הבא של PowerShell:
$user='*M.Becker*'
Get-ADComputer -Filter "description -like '$user'" -properties *|select name,description |ft




