הפעלת קבצי script של אתחול (כניסה) של PowerShell באמצעות GPO


המדיניות הקבוצתית של Windows מאפשרת לך להפעיל קבצי script שונים בעת הפעלה/כיבוי של המחשב או במהלך כניסה/התנתקות של המשתמש. באפשרותך להשתמש ב- GPOs לא רק כדי להפעיל סקריפטים קלאסיים של כניסה באצווה במחשבי תחום (

.bat

,

.cmd

,

.vbs

), אלא גם כדי להפעיל קבצי script של PowerShell (

.ps1

) במהלך הפעלה/כיבוי/כניסה/התנתקות.

בגירסאות מודרניות של Windows, באפשרותך להפעיל ישירות סקריפטים של PowerShell כניסה/יציאה מעורך GPO (בעבר היה צורך לקרוא לקובץ .ps1 מקובץ אצווה .bat כפרמטר של

powershell.exe

הפעלה).

הפעל את מסוף ניהול המדיניות הקבוצתית של תחומים (

GPMC.msc

), צור מדיניות חדשה (GPO) והקצה אותה לגורם המכיל של Active Directory (OU) המשמש כיעד עם משתמשים או מחשבים (באפשרותך להשתמש במסנני WMI GPO לפילוח מדיניות עדין). עבור למצב עריכת מדיניות.

עליכם לבחור מקטע GPO כדי להפעיל את סקריפט PowerShell, בהתאם למועד שבו תרצו להפעיל את סקריפט PS1 שלכם:

  • אם ברצונך להפעיל סקריפט PS בעת כניסה (התנתקות) של משתמש למחשב (כדי לקבוע את תצורת הגדרות הסביבה של המשתמש, או תוכניות: לדוגמה, ברצונך ליצור באופן אוטומטי חתימת Outlook בהתבסס על מאפייני המשתמש של AD, להתאים אישית שומר מסך או הגדרות מסך התחל), עליך לעבור לסעיף GPO: תצורת משתמש -> מדיניות -> הגדרות Windows -> סקריפטים (כניסה/התנתקות);

  • אם ברצונך להפעיל את קובץ ה- script של PowerShell בעת אתחול מחשב (כדי להשבית פרוטוקולים מדור קודם: NetBIOS ו- LLMNR, SMBv1, קביעת תצורה של הגדרות אבטחת מחשב וכו ') או לפני כיבוי המחשב, עליך לעבור לסעיף GPO עם הגדרות המחשב: תצורת מחשב -> מדיניות -> הגדרות Windows -> סקריפטים (אתחול/כיבוי).

כיצד להפעיל סקריפטים של PowerShell בהפעלת Windows עם מדיניות קבוצתית?

נניח, עלינו להפעיל את קובץ ה- script של PowerShell באתחול מחשב. בחר את מדיניות ההפעלה ועבור אל הכרטיסיה קבצי Script של PowerShell.

כעת עליך להעתיק את הקובץ עם קובץ ה- script של PowerShell לבקר התחום. העתיקו את קובץ ה-PS1 שלכם לספריית Netlogon שבבקר הדומיין (לדוגמה,

\\a-d.site\netlogon

).

מאחר שאנו מגדירים את קובץ ה-script של Startup PowerShell, עליך לבדוק את הרשאות NTFS "קריאה וביצוע" עבור

Domain Computers

ו/או

Authenticated Users

קבוצות בהרשאות קובץ PS1.

כעת לחץ על הוסף וציין את נתיב UNC לקובץ הסקריפט ps1 שלך ב- Netlogon.

אם אתה מפעיל קבצי script מרובים של PowerShell באמצעות GPO, באפשרותך לשלוט בסדר ההפעלה של קבצי ה- Script באמצעות הלחצנים למעלה/למטה.

כדי להפעיל כראוי קבצי script של PowerShell במהלך אתחול המחשב, עליך להגדיר את זמן ההשהיה לפני הפעלת קבצי script באמצעות המדיניות בסעיף תצורת מחשב -> תבניות מנהליות -> מערכת -> מדיניות קבוצתית. הפעל את המדיניות "הגדר עיכוב סקריפט כניסה " וציין עיכוב תוך דקות לפני הפעלת סקריפטי הכניסה (מספיק כדי להשלים את האתחול ולטעון את כל השירותים הדרושים). בדרך כלל, זה מספיק כדי לשים כאן 1 או 2 דקות.

אם קובץ ה- script של PowerShell משתמש בעבודה ברשת של Windows, עליך להפעיל את האפשרות "ציין זמן המתנה לעיבוד מדיניות הפעלה " עבור GPO מסוימים (תצורת מחשב -> מדיניות -> תבניות מנהליות -> מערכת -> מדיניות קבוצתית). אתה יכול לנסות להתחיל מ- 60 שניות כאן. לאחר הפעלת מדיניות זו, המחשב ימתין 60 שניות להודעות זמינות רשת לפני הפעלת קבצי ה- Script לאתחול. זה בדרך כלל מספיק זמן כדי לאתחל את מחסנית הרשת של Windows.

ב- Windows Server 2012R2 ו- Windows 8.1 ואילך, קבצי script של PowerShell ב- GPO מופעלים מספריית NetLogon במצב עקיפה. משמעות הדבר היא כי PowerShell Script ביצוע הגדרות התעלמות. אם ברצונך להפעיל קובץ script מתיקיה משותפת אחרת, או אם עדיין יש לך לקוחות Windows 7 או Windows Server 2008R2 ברשת שלך, עליך לקבוע את תצורת מדיניות ביצוע script PowerShell.

כברירת מחדל, הגדרות האבטחה של Windows אינן מאפשרות הפעלת קבצי script של PowerShell. ניתן לקבל את הערך הנוכחי של הגדרת המדיניות לביצוע script של PowerShell באמצעות

Get-ExecutionPolicy

cmdlet. אם המדיניות אינה מוגדרת, הפקודה תחזיר מוגבל (כל קבצי ה- Script חסומים). ניתן להגדיר את הגדרות האבטחה להפעלת קובץ ה- script של PowerShell באמצעות המדיניות "הפעל ביצוע script " (בסעיף תצורת מחשב GPO -> תבניות מנהליות -> רכיבי Windows -> Windows PowerShell). ערכי מדיניות אפשריים:

  • אפשר רק סקריפטים חתומים (AllSigned) - באפשרותך להפעיל רק סקריפטים חתומים של PowerShell ("כיצד להוסיף חתימה דיגיטלית לסקריפט PowerShell? ") — זוהי האפשרות הטובה ביותר מנקודת מבט של אבטחה;

  • אפשר סקריפטים מקומיים וסקריפטים חתומים מרחוק (RemoteSigned) - באפשרותך להפעיל כל סקריפט מקומי וחתום מרוחק;

  • אפשר את כל הסקריפטים (ללא הגבלה) - האפשרות הלא מאובטחת ביותר, מכיוון שהיא מאפשרת להפעיל סקריפטים של PowerShell.

אם אף אחת מההגדרות של מדיניות ביצוע קבצי ה- Script של PowerShell אינה מתאימה לך, באפשרותך להפעיל קבצי script של PowerShell במצב עקיפה (קבצי script אינם חסומים ואזהרות אינן מופיעות).

לשם כך, הפעל את קובץ ה- script של PowerShell מהקטע Startup -> Scripts. בחלק זה, תוכלו להפעיל את סקריפט PS1 שלכם על ידי קריאה לקובץ ההפעלה powershell.exe (בדומה לסקריפט המתואר במאמר). הצית:

  • שם הסקריפט:

    %windir%\System32\WindowsPowerShell\v1.0\powershell.exe
  • פרמטרים של סקריפט:

     -Noninteractive -ExecutionPolicy Bypass -Noprofile -file %~dp0MyPSScript.ps1

המונח

%~dp0

הוא משתנה סביבה המומר אוטומטית לנתיב UNC לספריית הסקריפט (במקרה זה, NETLOGON).

במקרה זה, אתה נאלץ לאפשר לכל קובץ script (אפילו לא מהימן) PowerShell לפעול באמצעות הפרמטר עקיפה.

אתחל מחדש את המחשב כדי לעדכן את הגדרות GPO ובדוק שקובץ ה- Script של PowerShell פועל לאחר אתחול Windows.

הפעל קובץ Script של Windows PowerShell בכניסה/יציאה של המשתמש

בוא נראה כיצד להפעיל באופן אוטומטי קובץ script של PowerShell כאשר משתמש נכנס (או מתנתק) ל- Windows.

אם עליך להפעיל את קובץ ה- Script לא בעת הפעלת המחשב, אלא לאחר שהמשתמש נכנס ל- Windows (עבור כל משתמש במחשב), עליך לקשר את ה- GPO ל- OU של Active Directory עם משתמשים. במקרה זה, יש להגדיר את קובץ ה-script של PowerShell במקטע תצורת משתמש של GPO.

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

בדוגמה זו, אשתמש בסקריפט PowerShell פשוט שכותב את זמן הכניסה של המשתמש לקובץ יומן טקסט.

  1. העתק את קובץ ה-script של PowerShell לקובץ ה-script של PowerShell

    \\a-d.site\NETLOGON\

    בבקר התחום של Active Directory;

  2. עבור אל תצורת משתמש -מדיניות > -> הגדרות Windows -> סקריפטים -> כניסה;

  3. נווטו אל הכרטיסייה PowerShell Scripts והוסיפו את קובץ הסקריפט שלכם ל-PS1 (השתמשו בנתיב UNC, לדוגמה

    \\a-d.site\NETLOGON\UserLog.ps1

    );

  4. התחבר מחדש למשתמש במחשב היעד;

  5. קובץ ה- Script של PowerShell יופעל באופן אוטומטי באמצעות GPO כאשר המשתמש ייכנס;

  6. באפשרותך לוודא שקובץ ה-script לכניסה של המשתמש בוצע בהצלחה על-ידי המקטע מזהה אירוע 5018u nder Microsoft-Windows-GroupPolicy/Operational של מציג האירועים:

    Completed Logon script for a-d\jsmith in 11 seconds.

אם ברצונך שהמשתמש לא יוכל לגשת לשולחן העבודה שלו עד לסיום הסקריפט, עליך להפעיל את הפרמטר GPO הפעל סקריפטים של כניסה באופן סינכרוני (תצורת מחשב -> תבניות מנהליות -> מערכת -> כניסה). במקרה זה, תהליך explorer.exe לא יתחיל עד שכל פריטי המדיניות וקבצי ה- Script של הכניסה יושלמו (פעולה זו מגדילה את זמן הכניסה של המשתמש!).

שים לב שקובץ ה- Script פועל עם הרשאות המשתמש הנוכחיות. אם למשתמש יש הרשאות ניהול במחשב והגדרות בקרת חשבון משתמש (UAC) זמינות, קובץ ה-script של PowerShell אין אפשרות לבצע שינויים הדורשים הרשאות מלאות.

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

  1. צור משימה חדשה של מתזמן המשימות תחת תצורת משתמש -העדפות > -> הגדרות לוח הבקרה -> משימה מתוזמנת;

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

    %LogonDomain%\%LogonUser

    והפעל את

    Run with highest privileges

    אפשרות;

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

  4. ציין את הנתיב לקובץ ה- script של PowerShell בכרטיסיה פעולות:

פעולה: התחל תוכנית
תוכנית/סקריפט:

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe

הוסף ארגומנטים (אופציונלי):

-ExecutionPolicy Bypass -command "& \\a-d.site\Netlogon\Your_PS_Script.ps1"

קבל מידע נוסף על קביעת התצורה של משימות Windows Scheduler באמצעות GPO.

קובץ script כזה של PowerShell יפעל כמנהל מערכת (אם משתמש התחום נוסף לקבוצת Administrators המקומית).

סקריפטים מסוימים לכניסה צריכים להיות מופעלים עבור כל משתמש רק פעם אחת בכניסה הראשונה למחשב (אתחול סביבת העבודה, העתקת תיקיות או קבצי תצורה, יצירת קיצורי דרך וכו '). הנה טריק פשוט המאפשר לך להפעיל סקריפט רק פעם אחת באמצעות GPO.