M365Con 2027 – כנס אונליין חינמי · 11–22 Jan 2027 · 120 sessions→ m365con.net

בלוג · Mirko Peters

הפסיקו לבזבז כסף: איך לאוטומט אופטימיזציה של רישיונות Microsoft 365 עם PowerShell

By · · Updated

ברוכים השבים לבלוג! אם אתם מנהלים דייר של Microsoft 365, כנראה מוכרת לכם התחושה הלא נעימה של פתיחת חשבונית החיוב בסוף החודש. אתם רואים עשרות – אולי מאות – רישיונות פעילים שהוקצו למשתמשים שלא התחברו מאז שנת הכספים הקודמת. בדיקות ידניות בפורטל מרגישות פרודוקטיביות, אבל הן מפספסות שוב ושוב חשבונות לא פעילים, שיתוף מסוכן וניקוז גדול של רישיונות. אם נמאס לכם מבדיקות אקראיות במרכז הניהול ומהפתעות לא נעי

Automatically translated with AI from the original post. Read the English original

▶ BLOGStop Wasting Money: Howto Automate Microsoft…M365.FM
Titelbild: Stop Wasting Money: How to Automate Microsoft 365 License Optimization with PowerShell

ברוכים השבים לבלוג! אם אתם מנהלים דייר של Microsoft 365, כנראה מוכרת לכם התחושה הלא נעימה של פתיחת חשבונית החיוב בסוף החודש. אתם רואים עשרות – אולי מאות – רישיונות פעילים שהוקצו למשתמשים שלא התחברו מאז שנת הכספים הקודמת. בדיקות ידניות בפורטל מרגישות פרודוקטיביות, אבל הן מפספסות שוב ושוב חשבונות לא פעילים, שיתוף מסוכן וניקוז גדול של רישיונות. אם נמאס לכם מבדיקות אקראיות במרכז הניהול ומהפתעות לא נעימות בביקורות הרבעוניות, הגיע הזמן להכניס אוטומציה לתהליך העבודה שלכם.

בפוסט הזה נצלול לעומק ונראה איך אפשר לכתוב סקריפט PowerShell מתוזמן שמצליב יומני כניסה עם רישיונות פעילים. עד סוף המדריך תבינו איך לסמן SKUs שאינם בשימוש, לחסוך עלויות מיותרות מדי חודש ולהגן על הדייר שלכם מפני עומס ניהולי מתפשט.

מבוא לאופטימיזציה של רישיונות Microsoft 365

אופטימיזציה של רישיונות נתפסת לרוב ככאב ראש שנתי. מנהלי IT ממהרים לשלוף ייצואים ידניים, שולחים הודעות לראשי מחלקות כדי לברר אם הקבלנים עדיין פעילים, ומנחשים אם חשבון מסוים באמת נטוש. הגישה התגובתית הזו מבטיחה בזבוז תקציב. כל יום שבו קבלן שעזב או עובד שסיים את עבודתו מחזיק ברישיון E5 או Business Premium, הארגון שלכם מדמם כסף.

כדי לפתור את זה, צריך להתייחס לאופטימיזציה של רישיונות כתהליך מתמשך ואוטומטי. באמצעות העוצמה של PowerShell ו-Microsoft Graph אפשר לבנות סקריפטים שמבצעים את העבודה הכבדה בשבילנו, ומספקים נתונים שניתן לפעול לפיהם לפני שהקפה של הבוקר מסתיים.

למה בדיקות ידניות בפורטל אינן מספיקות

מדוע שלא תסתמכו פשוט על מרכז הניהול המקורי של Microsoft 365? הפורטל נועד לנוחות, לא לממשל מעמיק. כשנכנסים לממשק הווב רואים תמונת מצב רגעית ללא הקשר היסטורי. הפורטל לא מאפשר בקלות להצליב תאריכי כניסה אחרונה מול SKUs רישיון ספציפיים עבור אלפי משתמשים בתצוגה אחת וברורה.

יתרה מכך, בדיקות ידניות תלויות לחלוטין בזיכרון האנושי. האם זכרתם לבדוק את חשבונות השירות? האם וידאתם אם תיבת הדואר המשותפת הזו באמת צריכה רישיון Exchange Online Plan 2? טעות אנוש מובילה לנקודות עיוורון, ונקודות עיוורון האלה עולות כסף ויוצרות סיכוני אבטחה.

בחירת מודולי PowerShell והיקפי הרשאות נכונים

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

  • Microsoft Graph PowerShell: התקן המודרני לניהול משתמשים, קבוצות ואובייקטים בספרייה.
  • ExchangeOnlineManagement: חיוני לביקורת תיבות דואר, כללי העברה ורישוי של תיבות דואר משותפות.
  • PnP.PowerShell: קריטי לבדיקת אתרי SharePoint, קישורי אורחים ושיתוף חיצוני מתפשט.

ודאו שאתם מיישמים את עקרון ההרשאות המינימליות בעת הענקת הרשאות לסקריפטים שלכם. לעולם אל תשתמשו בפרטי הגישה של מנהל גלובלי עבור סקריפטים אוטומטיים.

הגדרת דוחות ביקורת שבועיים לקריאה בלבד

הכלל הזהב של אוטומציה ב-IT פשוט: קריאה בלבד קודם. לעולם אל תתחילו את מסע האוטומציה שלכם בסקריפטים שמוחקים משתמשים או מסירים רישיונות באופן אוטומטי. האיטרציה הראשונה שלכם צריכה להתמקד כולה באיסוף נתונים.

הגדירו לוח זמנים שבועי שמריץ ביקורת מקיפה לקריאה בלבד. הביקורת הזו צריכה לבחון משתמשים לא פעילים, רשימות גישה של אורחים, שיוך רישיונות מול פעילות כניסה בפועל, הגדרות תיבות דואר וקבוצות Microsoft 365 יתומות. באמצעות קצב שבועי קבוע, תחליפו כיבוי שריפות כאוטי בסקירה של עשר דקות על דוחות נקיים שנוצרו אוטומטית.

הצלבת יומני כניסה עם רישיונות פעילים

הרוטב הסודי של אופטימיזציה של רישיונות הוא ההצלבה. רישיון שיושב על חשבון משתמש הוא חסר משמעות אם אותו משתמש לא אימת את זהותו מזה 90 יום. הסקריפט שלכם צריך למשוך שני מערכי נתונים עיקריים מ-Microsoft Entra ID:

  1. רשימת ה-SKUs של הרישיונות שהוקצו למשתמש.
  2. תאריך הכניסה האחרון של המשתמש (אינטראקטיבית ולא אינטראקטיבית).

על ידי חיבור שני מקורות הנתונים האלה באמצעות אובייקטים של PowerShell, ניתן לחשב מיד את בזבוז הרישיונות. אם הכניסה האחרונה של משתמש חורגת מסף מוגדר (למשל 60 או 90 ימים), הסקריפט מסמן את החשבון כמועמד לשחרור רישיון.

אוטומציה של הפצת דוחות ואחסון ארטיפקטים

דוח שנשאר בשקט בתיקייה מקומית אינו מועיל. יש להעביר את הממצאים ישירות לאנשים שיכולים לפעול בעקבותיהם. הגדירו את הסקריפט כך שייצר קובצי CSV מובנים וסיכומי HTML נקיים.

לאחר מכן, הגדירו את הסקריפט לשלוח את הסיכום בדוא"ל לרשימת התפוצה של ממשל ה-IT, או לפרסם אותו ישירות בערוץ ייעודי ב-Microsoft Teams באמצעות webhook. בנוסף, אחסנו את קובצי ה-CSV הגולמיים בספריית מסמכים מאובטחת של ממשל ב-SharePoint, כדי לשמור על מסלול תיעוד היסטורי לצרכי ציות רגולטורי.

תזמון בטוח עם Azure Automation ו-Task Scheduler

היכן כדאי להריץ את הסקריפטים האלה? אפשר להריץ אותם ממחשב מקומי או משרת Windows באמצעות Task Scheduler ואחסון אישורים מאובטח, אבל הגישה ברמה ארגונית היא Azure Automation.

על ידי פריסת הסקריפטים כ-runbooks ב-Azure Automation והאימות באמצעות Managed Identity, מבטלים את הסיכון של סיסמאות קשיחות בקוד או סודות של service principal שפגו. Azure Automation מטפל בסביבת ההרצה, ברישום הפעולות ובטיפול בשגיאות בצורה חלקה בענן.

יישום אמצעי הגנה לבטיחות ולציות

אוטומציה ללא אמצעי הגנה היא אסון שמחכה לרגע. כדי להגן על הדייר שלכם, בנו את אמצעי ההגנה הבאים לתוך צינור האוטומציה:

  • רישום מפורט (Verbose Logging): תעדו כל שלב בהרצת הסקריפט עם מזהי קורלציה.
  • בלוקים של Try/Catch: טפלו בהגבלות קצב (throttling), בתמים רשת ובשגיאות הרשאה בצורה מסודרת, ושלחו התראות לתיבת דואר משותפת אם הריצה נכשלת.
  • תורי פעולות ממתינות (Pending Actions): במקום להסיר רישיונות באופן אוטומטי, העבירו פעולות בעלות השפעה גבוהה דרך תור "ממתין" או תהליך אישור תחילה.

שלבי יישום של אסטרטגיית הטיפול

אל תנסו לאוטמט הכול ביום הראשון. הטמיעו את אסטרטגיית הטיפול בשלבים ברורים:

  • שבוע 1-2: דוחות בלבד. אספו נתונים, בדקו תוצאות חיוביות שגויות והתאימו את רשימות החריגים.
  • שבוע 3-4: פעולות רכות. התחילו לפוג קישורי אורחים מיושנים ולהציג המלצות להסרת רישיונות הדורשות אישור ידני.
  • באופן שוטף: אוטומטיזציה של פריטים בסיכון נמוך, תוך שמירה על שערי אישור אנושיים לשינויים הרסניים.

פתרון בעיות נפוצות באוטומציה עם PowerShell

גם הסקריפטים הטובים ביותר נתקלים במהמורות. אם אתם נתקלים בתוצאות ריקות, בדקו שוב את הרשאות Graph וגרסאות המודולים, ובדקו את השאילתה ב-Graph Explorer כדי לבודד את הבעיה. אם אתם חווים כשלים אקראיים, כנראה שהסקריפט פוגע במגבלות הקצב (throttling). יישמו backoff מעריכי ולוגיקת ניסיון חוזר כדי לשמור על יציבות ההרצות. לבסוף, היזהרו מתוצאות חיוביות שגויות על ידי תחזוקת רשימה לבנה מסודרת של חשבוני שירות וחשבוני break-glass.

שאלות נפוצות

האם אוטומציה עלולה לשבור את הדייר שלי?

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

האם אני צריך כבר עכשיו את Graph PowerShell?

כן, זו הדרך המודרנית קדימה. השתמשו בו לצד המודולים של Exchange Online ו-PnP כדי לכסות את כל משטחי הניהול שלכם.

כמה מהר אפשר לראות החזר על ההשקעה?

ההרצה השבועית הראשונה בדרך כלל חושפת כמות מפתיעה של רישיונות שאינם בשימוש וחשבונות אורח מיושנים, ומספקת הזדמנויות חיסכון מיידיות.

מה לגבי multi-geo או MSPs?

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

סיכום

אוטומציה של אופטימיזציית הרישיונות ב-Microsoft 365 היא אחד הפרויקטים בעלי התשואה הגבוהה ביותר שמנהל מערכת יכול לקחת על עצמו. היא עוצרת את הדליפה החודשית של הוצאות תוכנה מבוזבזות, מחזקת את מצב האבטחה על ידי ניקוי חשבונות מיושנים, ומשחררת אתכם מבדיקות ידניות מייגעות בפורטל.

אם אתם רוצים לשמוע הדרכה מלאה על המושגים האלה, כולל פירוק סקריפטים חי ותובנות ארכיטקטוניות מעמיקות, הקפידו לצפות בפרק הפודקאסט הקשור: Automate Microsoft 365 Tenant Cleanup with PowerShell. נתראה והמשיכו לשפר את משחק האוטומציה שלכם כבר היום!

Entities in this article

PowerShell Microsoft 365 Shared mailbox Automation Azure Automation Exchange Online SharePoint Microsoft Graph Microsoft 365 admin center Microsoft Graph PowerShell

Related articles

RSS