שינויים בסכימת ה־Active Directory (AD) עשויים לגרום לבעיות תפעוליות. בכלל, סכימת ה־AD לא צריכה להשתנות. אך אם מותקנת אפליקציה חדשה שתלויה ב־Active Directory, כמו למשל שרת Microsoft Exchange, אז עלינו לעדכן את הסכימה כדי לתמוך באפליקציה. כדי להגן על את מתיבת הפוסט, מומלץ לוודא שרק שינויים מאושרים בסכימת ה־AD יתבצעו.
באמצעות PowerShell, ניתן בקלות ליצור דוח של שינויים בסכימת ה־AD. אך לפני הרצת הקוד במאמר זה, יש להתקין את מודול ה־PowerShell עבור Active Directory של שרת Windows Server. מודול ה־PowerShell של Active Directory מותקן על בקרי דומיין (DC) כברירת מחדל. אולם עדיף לבצע משימות ניהול יומיומיות מקומיות Windows 10 שנמצאת בתחום.
להתקנת מודול ה־PowerShell של Active Directory של שרת Windows Server
מודול ה־PowerShell של AD הוא חלק מאמצעי הניהול המרוחק של שרתי RSAT עבור שירותי דומיין של Active Directory. כדי להתקין את כלי RSAT AD, פתחו פרומט PowerShell עם הרשאות מנהל מקומי והריצו את הפקודה הבאה:
Add-WindowsCapability -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 –Online
כאשר הכלים מותקנים, ניתן לסגור את חלון הפרומט המורם. כדי להריץ את שאר הפקודות במאמר זה, יש רק להיות מחוברים למערכת Windows 10 מחשב עם חשבון שהוא חבר בקבוצת המשתמשים באקטיבי דירקטורי 'Domain Users'.
למידע נוסף על התקנת RSAT ב־Windows 10, ראו את המדריך איך להתקין את כלי ניהול השרת המרוחק ב־Windows 10 באתר Petri.
דו"ח שינויים בתכנת ה-AD באמצעות PowerShell
באמצעות פקודת Get-ADObject, אנו יכולים להציג שינויים בתבנית. אך קודם כל עלינו לספק ל-Get-ADObject בסיס חיפוש, או במילים אחרות, אזור במדריך לחיפוש. אנו רוצים לחפש בתבנית, ולכן עלינו לדעת את מושג השם של תבנית המדריך שלנו. למזלנו, קל לקבל זאת באמצעות פקודת Get-ADRootDSE. אם תפעילו Get-ADRootDSE ללא פרמטרים, תראו את הנתיב למדריך של schemaNamingContext בפלט.
PowerShell מקל על השאילתה של כל תכונה, כמו schemaNamingContext, על ידי שימוש בנקודה וסוגריים כפי שמוצג להלן:
((Get-ADRootDSE).schemanamingcontext)
אנו יכולים להשתמש בקוד לעיל כערך למשתנה -SearchBase בפקודת Get-ADObject. אך יש עוד כמה פרמטרים שעלינו להוסיף. -SearchScope צריך להיות מוגדר כ-OneLevel, שמחפש אובייקטים ילד מיידיים של הנתיב המוצג במשתנה -SearchBase. כוכבית, *, משמשת כערך של משתנה -Filter כדי להחזיר הכל.
לבסוף, אנו משתמשים במשתנה -Properties כדי לציין את התכונות שאנו רוצים שיחזרו כחלק מהפלט. כפי שאפשר לראות, אני הולך למשוך את התכונות objectClass, name, whenChanged, ו-whenCreated.
$schema = Get-ADObject -SearchBase ((Get-ADRootDSE).schemanamingcontext)-SearchScope OneLevel -Filter * -Properties objectClass, name, whenChanged, whenCreated
אנו רוצים לקבץ את הנתונים שחזרו לפי תאריך. כדי לעשות זאת, אנו זקוקים לתאריך whencreated ללא מידע על השעה. אנו יכולים להשתמש בפקודת ה-Select-Object ובמאפיין מחושב כדי ליצור אובייקט חדש עם הנתונים שאנו זקוקים אליהם בפורמט הנכון. בפקודה המורחבת שלמטה, תוכל לראות שהעברתי את האובייקט שנוצר על ידי Get-ADObject לפקודת ה-Select-Object. @ מציין מאפיין מחושב, שיש לו תווית, 'אירוע', וביטוי שמחזיר רק את התאריך מתוך המאפיין whenCreated בפורמט קצר.
$schema = Get-ADObject -SearchBase ((Get-ADRootDSE).schemaNamingContext)-SearchScope OneLevel -Filter * -Properties objectClass, name, whenChanged, whenCreated | Select-Object objectClass, name, whenChanged, whenCreated, @{name='Event';expression={($_.whenCreated).Date.ToShortDateString()}}
לאחר מכן, אנו הולכים להעביר את האובייקט שנוצר על ידי Select-Object לפקודת Sort-Object. ולהפוך את הנתונים של האובייקט להיות ממוינים לפי המאפיין whenCreated.
$schema = Get-ADObject -SearchBase ((Get-ADRootDSE).schemaNamingContext)-SearchScope OneLevel -Filter * -Properties objectClass, name, whenChanged, whenCreated | Select-Object objectClass, name, whenChanged, whenCreated, @{name='Event';expression={($_.whenCreated).Date.ToShortDateString()}} | Sort-Object -Property whenCreated
לבסוף, נעביר את האובייקט לפקודת Format-Table. זה יציג את המאפיינים בטבלה, מקובצים לפי אירוע, שיצרנו באמצעות פקודת ה-Select-Object.
$schema | Format-Table objectClass, name, whenChanged, whenCreated -groupby Event -autosize
$schema = Get-ADObject -SearchBase ((Get-ADRootDSE).schemaNamingContext)-SearchScope OneLevel -Filter * -Properties objectClass, name, whenChanged, whenCreated | Select-Object objectClass, name, whenChanged, whenCreated, @{name='Event';expression={($_.whenCreated).Date.ToShortDateString()}} | Sort-Object -Property whenCreated $schema | Format-Table objectClass, name, whenChanged, whenCreated -groupby Event -autosize
אם נריץ את כל הקוד יחד, נראה שינויים בסכימה מופיעים בחלון פקודת הפרומפט. בתיקייתי, הותקן שרת Exchange, ולכן ניתן לראות המון שינויים בסכימה.
Source:
https://petri.com/how-to-report-active-directory-schema-changes-using-powershell/