ככל שארגון גדל, כך גם הסביבה שלו ב-Active Directory (AD) ובתשתיות מדיניות קבוצה (GP) מתרחבת. אובייקטי מדיניות קבוצה (GPOs) יכולים להתמלא במהירות ולפתע תופסים מקום בסביבה שלך. בבעיה של עשרות GPOs שאינם מקושרים מקרינים בסביבה שלך. בואו נשנה זאת.
במדריך זה, תלמד איך לגלות את כל ה-GPOs שאינם מקושרים עם ה-מסוף ניהול מדיניות הקבוצה (GPMC) ו-PowerShell.
בואו נתחיל!
דרישות מוקדמות
מאמר זה יהיה מדריך עם דוגמאות מעשיות. אם ברצונך להתעקש, וודא שיש לך:
- תחום פעיל של Active Directory. מאמר זה ישתמש בתחום בשם HomeLab.Local.
- A Windows computer joined to the AD domain. This tutorial will use Windows 10.
- המחשב ב-Windows מצויד ב־חבילת כלים לניהול מרחוק של השרתים (RSAT) מותקנת.
מאיפה מגיעים GPOs שאינם מקושרים?
כאשר אתה יוצר GPO ומגדיר את כל ההגדרות שברצונך ליישם על מחשבי הלקוח, ה-GPO הזה לא עושה כלום בפועל. כדי להשפיע בפועל על מחשבי הלקוח, על ה-GPO להיות מקושר ליחידת ארגון (OU) ב-AD.
ככל שהזמן עובר ומנהלים רבים יוצרים GPOs, שוכחים לקשור אותם, מנתקים GPOs מ-OUs, מתכוונים להסיר אותם אך לעולם לא עושים זאת, GPOs פשוט מתנפצים ונשארים סתם מסתובבים. במיוחד בארגונים גדולים, GPOs שאינם מקושרים יכולים להתרחש במאות אם לא יתוודעו כהלכה.
איתור של GPOs שאינם מקושרים ב-GPMC
ניתן למצוא GPOs שאינם מקושרים באחת משני הדרכים: דרך ה-GPMC או דרך PowerShell. אם יש לך רק מספר זעיר של GPOs שאינם מקושרים, ייתכן שיהיה הגיוני להשתמש ב-GPMC במקום ליצירת סקריפט PowerShell.
כדי למצוא GPOs שאינם מקושרים דרך ה-GPMC:
1. פתח את ה-GPMC על ידי לגשת לתפריט ההתחלה ולהקליד "ניהול מדיניות קבוצתית". כאשר התוכנית GPMC מופיעה, פתח אותה.
2. ב-GPMC, עבור אל יער: <שם היער שלך —> דמיינים —> <שם הדומיין שלך>, לחץ עם העכבר על שם הדומיין ולחץ חיפוש. פעולה זו תביא את תיקיית החיפוש למדיניות הקבוצה Search for Group Policy Objects.

3. לחץ על תפריט הנפתח Search Item ובחר ב GPO-links. פריט חיפוש זה יחפש GPOs שקשורים ליחידת ארגון (OU). שנה את תפריט התנאים Condition להיות Exist In והדומיין להיות הדומיין שלך.
בתמונה למטה, בשילוב של הגדרות אלו יתבצע חיפוש אחר כל ה-GPOs שקשורים לפחות ל-OU אחד בדומיין homelab.local.
כשתסיים, לחץ על Add כדי להוסיף את הקריטריונים. זה יופיע מתחת ל- All search criteria.

4. כעת, לחץ על כפתור החיפוש Search כדי למצוא את כל ה-GPOs שמתאימים לקריטריוני החיפוש.

5. כפי שמוצג בתמונה למטה, רק GPOs שקשורים מוצגים בתוצאות החיפוש.

6. כדי למצוא GPOs שאינם קשורים, השווה ידנית בין כל ה-GPOs ל-GPOs שקשורים כפי שמוצג למטה. בתמונה למטה, ניתן לראות רק שלושה GPOs מקושרים. תחת Group Policy Objects, ניתן לראות שניים מתוך ה-GPOs אינם מופיעים (UnlinkedGPO1 ו-UnlinkedGPO2). זה אומר שהם אינם מקושרים.
משימה זו תיקח זמן רב ולכן יוצג איך לבצע את המשימה זו באמצעות PowerShell בחלק הבא.

GPOs מקושרים יכילו קישור כאשר הם משוייכים לאובייקט AD כמו OU, כפי שמוצג למטה. אם יש לך רק מספר קטן של GPOs, תוכל לחפש GPOs שיש להם קישור ואלו שאין להם. GPOs שאין להם קישור הם GPOs שאינם מקושרים.

מציאת GPOs שאינם מקושרים באמצעות PowerShell
עיון ב-GPOs ב-GPMC עשוי לעבוד עבור מספר קטן של GPOs, אך ייתכן שתתמקד בקושי אם יש לך מאות או אלפי GPOs שמנהלים אלפי נקודות קצה. במקרה כזה, זהו הזמן לאוטומציה של תהליך זה ולבנות כלי PowerShell נוח.
בהנחה שאתה על מחשב Windows מקומי מצורף לדומיין עם RSAT מותקן:
1. פתח קונסולת PowerShell של Windows.
2. יבא את המודול GroupPolicy. מודול ה-GroupPolicy מגיע עם RSAT וכבר צריך להיות מותקן במערכת שלך. מודול זה מכיל את כל הפקודות הנחוצות לעבוד עם GPOs ב-PowerShell.
3. הרץ את פקודת ה-PowerShell Get-GPO באמצעות הפרמטר All. פקודה זו משאירה בקשר AD ומחזירה את כל ה-GPOs שנמצאו.

4. עכשיו שניתן לשאול את כל ה-GPOs בדומיין, עליך להבין כעת אילו מהם אינם מקושרים. כדי לעשות זאת, הרץ את הפקודה Get-GPOReport. פקודה זו מאפשרת לך לספק שם וסוג של פלט להחזיר.
העתק והדבק ידנית את אחד משמות ה-GPOs שנמצאו בשלב למעלה והפעל את הפקודה. תראה שהפקודה מחזירה דוח XML של כל ההגדרות של ה-GPOs. במיוחד, שים לב לחלק הנקרא LinksTo, כפי שמוצג למטה. סעיף זה מכיל את קוד XML של הנתיב אל ה-OU שה-GPO מקושר אליו.

פקודת ה-\code{Get-GPOReport} יכולה לקבל דוח רק עבור GPO יחיד בכל פעם. פקודת זו כוללת תוצאות חיפוש רק מתחומים ולא מאתרי AD.
5. עכשיו שאתה יודע כיצד למצוא את כל ה-GPOs עם ה-\code{Get-GPO} ופקודת ה-\code>Get-GPOReport} לגלות למה הם מקושרים (\code{Get-GPOReport}), יש לשלב אותם על ידי העתקה והדבקה של הפקודת PowerShell הבאה במסוף שלך.
הפקודה למטה מפעילה שאילתא עבור כל ה-GPOs בדומיין (\code{Get-GPO}) ואז יוצרת דוח XML עבור כל אחד מהם (\code{Get-GPOReport}), מאפשרת רק לגרסאות שאין להן מחרוזת \code{
בסביבת ההדרכה, אתה יכול לראות בדוגמה הבאה UnlinkedGPO1 ו- UnlinkedGPO2 לא מקושרים לשום OU.

בניית כלי PowerShell ל-GPO שאינם מקושרים
עכשיו נשלב את כל מה שלמדת ליחד ונבנה סקריפט PowerShell שתוכל להשתמש בו בעולם האמיתי.
1. פתח את העורך שלך המועדף והעתק/הדבק את הסקריפט PowerShell הבא אליו. שמור את הסקריפט כ- Remove-UnlinkedGPO.ps1. סקריפט זה:
- יוצר תיקייה עם התאריך הנוכחי לאחסון דוחות GPO לא מקושרים.
- מוצא את כל ה-GPOs ב-AD שאינם מקושרים.
- יוצר דוח HTML עבור כל GPO לא מקושר ושומר אותו על הדיסק.
- יוצר ומוסיף לקובץ טקסט רשימה של כל ה-GPOs לא מקושרים.
- מסיר כל GPO לא מקושר עם שלב אישור באמצעות פקודת ה-\code{Remove-GPO}.
אתה יכול גם להוריד את סקריפט Remove-UnlinkedGPO.ps1 מה-GitHub.
2. בצע את הסקריפט Remove-UnlinkedGPO.ps1.
3. אם נמצא GPO שאינו מקושר, התסריט יבקש ממך להסיר אותו. הוראה זו מגיעה מתסריט Remove-GPO
באמצעות המתג Confirm
. כדי לאשר את הסרת ה-GPO היחידי זה, לחץ כן, אחרת, לחץ כן להכול כדי להסיר את כל ה-GPO שאינם מקושרים ללא אישור נוסף.

לאחר שהתסריט הושלם ונמצא לפחות GPO אחד שאינו מקושר, עליך לראות בתיקיית C:\GPOBackup\<תאריך> את תוכן ה-GPO כתיקיית GUID יחד עם דוחות ה-HTML והקובץ UnlinkedGPOs.txt.

4. עכשיו, פתח אחד מדוחות ה-HTML של ה-GPO עם דפדפן אינטרנט. תוכל לראות שהדוח מכיל את כל ההגדרות שהוגדרו ב-GPO ההוא. בדוגמה שלמטה, ה-GPO UnlinkedGPO1 מכיל הגדרות למדיניות ביצוע PowerShell.

5. לבסוף, פתח את הקובץ UnlinkedGPOs.txt. תראה שהוא מכיל את אותה הפלט שקיבלת מתסריט ה-Get-GPO
.

סיכום
עליך כעת לדעת כיצד למצוא את כל ה-GPO שאינם מקושרים בסביבת ה-AD שלך באמצעות GPMC ו-PowerShell.
איזו דרך אתה מעדיף? האם יש לך רעיון לשפר את תסריט ה-PowerShell שכיסיתי?