מדריך הפועל להמרת PS1 ל- EXE (7 דרכים)

ניתן להפעיל סקריפטים של PowerShell בכמה דרכים שונות, אך לכולם יש חסרון אחד, אי אפשר פשוט להפעיל אותם כמו תוכנית Windows סטנדרטית (EXE). אולי תרצה למנוע עריכה של הקוד בסקריפט או אולי להקל על הרצת סקריפטים למשתמשים שלך. הגיע הזמן ללמוד איך להמיר PS1 ל-EXE.

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

דרישות

כלים שונים מודגמים במדריך זה עם הוראות שלב אחר שלב על איך להמיר PS1 ל-EXE. ודא שיש לך את כל הדרישות הבאות כדי להמשיך.

  • A Windows computer with an administrator privileges
  • מ-Windows 7, 8.1 ו-10, PowerShell כבר כלול בהתקנת מערכת ההפעלה. אף על פי שסקריפטים רבים יכולים לרוץ עם PowerShell 3.0, כדאי יותר לקבל PowerShell 5.1 או PowerShell 7
  • הגדרת מדיניות הביצוע של PowerShell מוגדרת לאפשר ביצוע סקריפטים

PS2EXE

כלי PS2EXE הוא הכלי הראשון ברשימתנו. PS2EXE הוא מודול PowerShell חינמי ופתוח המבוסס על דברי המחבר Ingo Karstein, "לא ממיר את תסריט הפאוורשל לשפה אחרת. הוא מקפיא את התסריט עם מארח PowerShell קל משקל שנכתב בשפת C# ומהדהד את קוד המקור ב-C# שנוצר באופן דינמי בזיכרון לקובץ EXE."

בקרו בבלוג של Ingo Karstein כדי לדעת עוד על התחלתה של PS2EXE. התפתחות המודול הושהתה כבר בשנת 2017, אך Markus Scholtes לקח על עצמו את התפתחותה של PS2EXE ויצר גרסת ממשק משתמש גרפי.

התקנת מודול PS2EXE

PS2EXE התחילה כתסריט PowerShell, וכאשר Markus Scholtes לקח על עצמו את התפתחותה, הופק מודול. מאז PS2EXE משתמש במודול כדי להמיר את התסריט שלך לקובץ הרצה, עליך להתקין אותו מגלריית PowerShell.

כדי להתקין את מודול PS2EXE, עקבו אחר הוראות הליך התקנה הבאות.

  1. פתחו עצמאית קונסולת PowerShell בתור מנהל.

2. הרץ את הפקודה Install-Module כדי להוריד ולהתקין את המודול מהגלריה של PowerShell.

Install-Module ps2exe

3. הקלד Y ולחץ על Enter פעם אחת כאשר אתה רואה את ההודעה על מחסור באמון במאגר. אל תדאג. ההודעה הזו אינה מזיקה.

Untrusted repository
 You are installing the modules from an untrusted repository. If you trust this repository, change
 its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to
 install the modules from 'PSGallery'?
 [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): Y

המרת PS1 ל-EXE דרך שורת הפקודה

PS2EXE מספק שני אופציות להמרת סקריפטים של PowerShell ל-EXEs; דרך שורת פקודה וממשק משתמש גרפי. בואו נתחיל תחילה בשימוש בשורת הפקודה.

כדי להמיר סקריפט של PowerShell יחיד ל-EXE דרך שורת הפקודה דורשת שורת פקודה יחידה המספקת את פקודת PS2EXE הראשית (Invoke-PS2EXE) ואחריה נתיב הסקריפט הראשי להמרה והנתיב ל-EXE שתרצה ליצור.

## השתמש בשם הפקודה המלא
Invoke-ps2exe .\source.ps1 .\target.exe

## השתמש בקיצור דרך
ps2exe .\source.ps1 .\target.exe

כעת ניתן להפעיל target.exe, והוא יפעיל את הקוד המוגדר בסקריפט source.ps1. אם לא השתמשת בפרמטר NoConsole בעת המרת הסקריפט שלך, יופיע מסוף פקודות של PowerShell כאשר מפעילים את הקובץ target.exe.

הסתרת המסוף

בדוגמה הקודמת, כאשר מפעילים את target.exe, מסוף פקודות של PowerShell טיפולי יופיע. לרוב, אין רצון לראות את זה. כדי למנוע את זה, ניתן להשתמש בפרמטר NoConsole בעת יצירת ה-EXE, כפי שמוצג למטה.

Invoke-ps2exe "D:\Test\Get-LatestAppLog.ps1" "D:\Test\Get-LatestAppLog.exe" -noConsole
Converting PS1 to EXE with PS2EXE Command-Line

ניתן גם לבחור להידרך את ה-EXE רק עבור זמן ריצה של x86 או x64 ואחרים. ניתן למצוא רשימה של פרמטרים זמינים בעמוד השחרורים של GitHub.

המרת PS1 ל-EXE דרך הכלי PS2EXE-GUI

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

נדרשות רק מספר לחיצות כדי להמיר את PS1 ל-EXE עם הגרסה הגרפית של PS2EXE. ובניגוד לשורת הפקודה, תוכל לעיין ולבחור את קובץ המקור (PS1) מתוך תיקיית דיאלוג עיון נחמדה בגרסה הגרפית.


כדי להפעיל את הגרסה הגרפית, יהיה עליך לקיים את .NET 4.x על המחשב שלך. אם יש לך רק .NET 3.5x, תוכל להוריד את גרסת PS2EXE-GUI עבור .NET 3.5x בנפרד.

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


32 ביט של Windows: C:\Program Files (x86)\WindowsPowerShell\Modules\ps2exe\<version>


64 ביט של Windows: C:\Program Files\WindowsPowerShell\Modules\ps2exe\<version>

בתוך תיקיות אלו, תמצא קובץ בשם Win-PS2EXE.exe.

  1. פתח את הכלי C:\Program Files\WindowsPowerShell\Modules\ps2exe\<version>\Win-PS2EXE.exe

2. לחץ על הנקודות השותפות ישירות ליד תיקיית מקור כדי לאתר את התסריט PS1 שברצונך להמיר.

3. הגדר את הערך של קובץ יעד ווודא שכולל את הסיומת של קובץ .exe.

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

5. לחץ על הידור כדי להתחיל בתהליך ההמרה.

Converting PS1 to EXE with PS2EXE GUI

6. כאשר אתה לוחץ על לחצן הידור, PS2EXE יפתח ישיבת PowerShell ויבצע את ההמרה. לאחר הסיום, לחץ על Enter או סגור את חלון הקונסולה.

Successfully Converted PS1 to EXE

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

PS1 to EXE

PS1 to EXE הוא יישום שולחן העבודה נוסף חינמי שפותח על ידי F2KO Software שמאפשר לך להמיר PS1 לקובץ EXE. ה־Ps1 to Exe, להבדיל מ־PS2EXE, הוא כלי GUI המלא עם עורך תסריט פשוט.

בדיוק כמו PS2EXE, Ps1 to Exe גם כולל גרסה לממשק משתמש גרפי וגרסה לשורת פקודה. אולם, במקום קונסולת PowerShell, Ps1 to Exe מחייב אותך להריץ את הפקודות בתוך פקודה מהיכן.

לצערנו, למרות שהאתר של F2KO עדיין פעיל, נראה שאין דרך להוריד את PS1 to EXE משם. מזל שהתקנה להורדה של כלי זה נמצאת בתקנה על פני האינטרנט.

בואו נעבור על איך להפעיל ולהשתמש ב־PS1 to EXE כדי ליצור EXE מתסריט של PowerShell.

המרת PS1 ל־EXE באמצעות הממשק הגרפי

לאחר שתתקין ותפעיל את Ps1 to Exe, תגלה כי יש ל Ps1 to EXE עורך קוד פשוט. בתוך עורך זה, תוכל לבנות ולשמור סקריפטים וללחוץ על כפתור כדי להמיר אותם.

Ps1 to Exe תומך בגיבוי דוט-סורסינג; שים לב איך קובץ PS1 נוסף נקרא עם השורת פקודה למטה.

## קרא AppLogsComplete.ps1
try { .\AppLogsComplete.ps1 } catch { exit }

כדי להמיר סקריפט ל-EXE עם Ps1 to Exe:

  1. פתח את כלי Ps1 to Exe משולחן העבודה שלך.

2. לחץ על קובץ —> פתח, מצא את הסקריפט שברצונך להמיר ופתח אותו.

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

Configuring The EXE Output Settings

3. כדי להוסיף סקריפטים תלויים, לחץ על כרטיסיית הטמעה ואז לחץ הוסף.

4. כאשר אתה מרוצה מאפשרויות ההמרה, לחץ על הכפתור המר בסרגל העליון כדי להמיר את הסקריפט ל-EXE.

Adding Dependent Scripts And Converting Script to EXE

המרת PS1 ל-EXE באמצעות שורת הפקודה

אם תעדיפו להשתמש בשורת הפקודה, PS1 to EXE CLI נקראת ps1_to_exe.exe אך כדי להשתמש בה זה קצת מסובך.

עם PS1 to EXE פתוח:

  1. פתח מקרו כמנהל

2. שנה את התיקייה הפעילה לתיקיית ההתקנה של PS1 to EXE.

x86
 cd 'C:\Program Files (x86)\Ps1 to Exe'
 x64
 cd 'C:\Program Files\Ps1 to Exe'

3. עכשיו הרץ ps1_to_exe כדי להמיר את ה-PS1 לקובץ נפרד.

הפקודה למטה כוללת סקריפט תלוי בקובץ EXE שנקמפל ומגדירה את יעד הקובץ הניתן לביצוע למערכת ההפעלה של Windows 64 ביט.

ps1_to_exe /ps1 "D:\Test\Get-LatestAppLog4.ps1" /exe "D:\Test\Get-LatestAppLogs.exe" /include "D:\Test\AppLogsComplete.ps1" /invisible /x64

להלן הדגמה של תהליך ההמרה הממשי ופרטי הפלט.

Converting Script to Executable Using Ps1 to Exe Command-Line Version

IExpress 2.0

אם אתה מעדיף שלא להוריד כלי נוסף, אתה במזל מכיוון שיש לך את כלי ה- IExpress הישן שבוודאי יהיה תועלת. IExpress הוא יישום מובנה של Windows שנהוג להשתמש בו לאריזת קבצים או יצירת מתקיני תוכנה.

זה קורה ש-IExpress יכול גם להמיר קבצי PS1 לקבצי EXE בזמן קידום הקבצים התלויים ביחד בקובץ יישום יחיד!

כדי להמיר סקריפט PowerShell פשוט לקובץ EXE:

  1. עליך לפתוח את IExpress כמנהל. לחץ על מקש ה-Windows*+R* כדי לפתוח את תיבת הדו-שיח הריץ, הקלד iexpress ולאחר מכן ללחוץ על המקש Ctrl+Shift+Enter.
Running IExpress As Administrator

2. בדף הברכה של IExpress, בחר צור קובץ הפירוק העצמי החדש ולחץ הבא כדי להגדיר את החבילה שלך. קובץ ההוראות לפירוק עצמי (SED) מנהל את האפשרויות המשמשות בבניית חבילת ההתקנה; חשוב לחשוב עליו כעל קובץ הגדרות.

Create New Self Extraction Directive File

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

Selecting An Action To Take When Running The EXE

4. כעת ספק כותרת חבילה ולחץ על הבא. כותרת החבילה תופיע בכל ההודעות שהמשתמש יראה במהלך ההתקנה.

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

Setting A Title For The Package

6. הבא, בחר ללא להציג הודעה. בחירת ללא להציג הודעה אינה מציגה הודעת דיאלוג לא נדרשת למשתמש כאשר הוא מפעיל את ה-EXE.

No Prompt

6. אם אתה יוצר את החבילה עבור פרויקט שדורש הסכם משתמש סופי (EULA), תוכל לבחור להוסיף רישיון להצגה כאשר אתה מפעיל את ה-EXE. למען הדוגמה, בחר באפשרות לא להציג את הרישיון ולחץ על הבא.

Adding an End User License Agreement

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

Selecting Files To Include In The Package

8. בחלון תכנת התקנה להפעלה, ספק את הנתיב למנוע ה-powershell.exe באמצעות הפרמטר File. וודא שהגדרת את הפרמטר ExecutionPolicy ל־Bypass כדי לוודא שמדיניות ההרצה המוגדרת מראש אינה מונעת את ביצוע התסריט.

powershell.exe -ExecutionPolicy Bypass -File Get-LatestAppLog.ps1
Writing Custom Command

9. לבאר איך תרצה שחלונות ה-EXE יתנהגו בעת ביצוע הרצה. אם ה-EXE אמור לרוץ ברקע, בחר מוסתר ולחץ הבא. מוסתר הוא ההתנהגות החלונות הנפוצה ביותר.

Selecting EXE’s Window Behavior On Execution

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

Setting Up Post Installation Message

11. כעת בחר את הנתיב ל-EXE שתרצה ליצור. כאן תוכל גם לאפשר מספר אפשרויות שונות. לאחר השלמת התהליך, לחץ הבא

  • הסתר אנימציה של הפקסולות מהמשתמש – אם ה-EXE שלך רץ ברקע, יש לשמור על אפשרות זו מושבתת.
  • אחסון קבצים בשם ארוך בתוך החבילה – כדי לתמוך בשמות קבצים ארוכים במהלך תהליך החילוץ בזמן ריצת ה-EXE. יש להשאיר אפשרות זו מושבתת אם תפעיל את החבילה על Win 95 ותשתמש בקובץ INF במהלך ההתקנה.
Setting Up Target Path And File Name

12. אם תרצה שה-EXE יפעיל איתחול מחדש לאחר השלמת התסריט, כאן תוכל לבחור תמיד איתחול מחדש. לאחר בחירת האפשרות, לחץ הבא.

Choosing Whether To Require A Restart Or Not

13. עכשיו בחר שמור קובץ הוראות אוטושדפניות (SED) ולחץ הבא. שמירת קובץ SED מאפשרת לך לשנות כל הגדרה שסיפקת באמצעות האשף בזמן מאוחר יותר. קובץ ה-SED מכיל תשובות לכל הערכים שסופקו עד כה.

Saving Information About The Package Configuration

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

דרישת הרץ כמנהל

אם יש לך סקריפט שדורש לרוץ כמנהל, IExpress אינו נותן לך אפשרות לעשות זאת, אך זה עדיין אפשרי.

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

זכור שעליך לשנות את הפרמטר WindowStyle במסך הצג חלון בהתאם לכיצד אתה רוצה להציג או להסתיר את חלון ה-EXE בעת הפעלתו.

param([switch]$Elevated)

function Test-Admin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
    $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
## בדוק אם הסקריפט רץ כמנהל, אם לא, הרץ שוב כמנהל
if ((Test-Admin) -eq $false){ 
    if ($elevated) {
    } else {
        try{
            Start-Process powershell.exe -WindowStyle Hidden -Verb RunAs -ArgumentList ('-noprofile -file "{0}" -elevated' -f ($MyInvocation.MyCommand.Definition))
            ## סגנונות חלון: רגיל, מינימלי, מקסימלי ומוסתר

						## ------> שאר הסקריפט שלך נכנס כאן <------ ##

        }
        catch{
            exit
        }
    }
    exit
}

ISE Steroids

אם אתה אוהב לכתוב סקריפטים ב-PowerShell ISE, הכלי הזה מתאים לך. ISE Steroids הוא תוסף לעורך PowerShell ISE מאוזן כמודול PowerShell שמוסיף תכונות רבות ל-ISE.

ISE Steroids יש מגוון תכונות, אך זו שבשבילה אתה כאן היא היכולת שלו להמיר סקריפט ל-EXE, אז בואו נתחיל.

  1. בהנחה שכבר התקנת את ISE Steroids, פתח את PowerShell ISE.

2. בקונסולה המשולבת, הרץ Start-Steroids כדי להפעיל את ההרחבה ולטעון את Steroids.

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

4. לחץ על אפשרות כלים —> המר קוד ל-EXE בדיוק כמו בצילום המסך למטה.

Compiling PS1 to EXE

5. עכשיו הגדר את כל האפשרויות שתרצה להחיל על ה-EXE המתקבל בחלון הקטן, כמו זה למטה. האפשרויות הללו הן פרמטרים, כמו ב-PS2EXE, להגדרת תכונות והתנהגות קובץ ה-EXE שלך.

Configuration For The Executable File

6. לאחר שהגדרת את כל האפשרויות, לחץ על כפתור צור יישום. ISE Steroids אז יבקש ממך לבחור נתיב יעד. לאחר מכן, סיימת להמיר את ה-PS1 שלך ל-EXE.

Visual Studio Code ו-PowerShell Pro Tools

לעורך הבא שלנו, אנו מביאים לך Visual Studio (VS) Code. VS Code הוא החלופה המומלצת של מיקרוסופט ל-PowerShell ISE וזכה לקבלה רחבה בקרב מפתחי PowerShell.

אף על פי ש- VS Code אינו מציע דרך מובנית להמיר תסריטי PowerShell לקבצי EXE, עדיין אפשר לעשות את זה עם התוסף PowerShell Pro Tools. בנוסף להמרת התסריטים ל- EXE, התוסף PowerShell Pro Tools עוזר באריזת התסריטים, כולל מעצב GUI, ועוד.

PowerShell Pro Tools דורש את .NET 4.6.2 (או מאוחר יותר) Developer Pack ו- .NET Core 1.0 או מאוחר יותר לאריזת התסריטים.

אתה משתמש ב- Get-LatestAppLog3.ps1 וב- AppLogsComplete.ps1 לדוגמה זו.

בהנחה שיש לך את VS Code ואת התוסף PowerShell Pro Tools מותקנים:

  1. פתח את VS Code ותסריט PowerShell שברצונך להמיר ל- EXE.

2. בפינה הימנית העליונה של VS Code, לחץ על כפתור ה- אריזת תסריט כ- Exe כפי שמוצג למטה.

Compiling PowerShell Script To An EXE

3. כאשר אתה יוצר EXE מתוך סקריפט לראשונה, PowerShell Pro Tools ייצור קובץ package.psd1 בשורש מרחב העבודה הנוכחי.

Showing Workspace Root and PowerShell Data File (PSD1)

4. בתוך הקובץ package.psd1, נתיב הדיוק של הסקריפט להמרה מתווסף אוטומטית למפתח Root. הגדר את מפתח נתיב הפלט כדי לציין את הנתיב לשמירת ה-EXE, כפי שמוצג למטה.

Setting up Root and Output Path

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

Logs Shown In The Output Pane

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

אם יש לך סקריפטים תלויים שקוראים בסקריפט הראשי שלך, סיומת PowerShell Pro Tools יכולה לטפל גם בהם. כדי לעשות זאת, סיומת PowerShell Pro Tools מחייבת אותך ל- dot-source את כל הסקריפטים שברצונך לכלול עם ה-EXE שלך.

הסקריפט Get-LatestAppLog3.ps1 למטה הוא הסקריפט הראשי לקימפולציה. בתוכו, הוא מפעיל את הסקריפט AppLogsComplete.ps1. כדי לוודא ש-PowerShell Pro Tools כולל את קובץ התלוי AppLogsComplete.ps1, עליך ל- dot source את הסקריפט או להביא אותו לתחום הסקריפט הנוכחי.

. "$PSScriptRoot\AppLogsComplete.ps1"
Using Dot-Sourcing To Call Another PS1 Inside The Main Script

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

PowerGUI

PowerGUI היה אחד מעוררי העניין המקוריים של PowerShell. אף שנראה שהוא נשכח מזמן, עדיין ניתן למצוא עותקים מתמידים ברשת. למה לדבר על עורך תסריטים של PowerShell שנשכח מזמן? כי יש לו ממיר מובנה מ-PS1 ל-EXE!

אף שאתר של PowerGUI כבר לא קיים, עדיין אפשר למצוא עותק באתרים כמו Softpedia.

המרת סקריפט PS1 ל-EXE

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

Create a New Script or Open an Existing One

כשאתה מרוצה מהתסריט שלך, לחץ על תפריט כלים. ואז בחר המרת סקריפט או לחץ Ctrl+F9 על המקלדת שלך.

Initiate Compiling Script to EXE

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

  1. לחץ על לחצן עיון ואתר את ה-PS1 שברצונך להמיר.

2. PowerGUI תומך בגרסאות מסגרת היעד מ-Microsoft .NET Framework 3.5 עד ל-.NET Framework 4.0.

3. אם ברצונך רק שה־EXE ירוץ ברקע, נטרל את אפשרות הצגת חלון PowerShell Console כאשר התסריט מופעל.

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

5. לאחר שתרגיש מרוצה מההגדרות, לחץ על אישור כדי להתחיל בהמרת ה־PS1 שלך ל־EXE.

Configuring Compiled EXE Behavior

בתיאור נוסף, תשים לב לחסרון ב־PowerGUI בנוגע לשליטה בכיצד ברצונך שה־EXE ירוץ. PowerGUI אינו נותן הרבה אפשרויות, כמו הוספת פרמטרים.

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

PowerShell Studio

כדי לסיים את רשימת ממירי PS1 ל־EXE שלנו, בואו נסיים עם אחד מהתכנות ה־IDE של PowerShell העשירות במאפיינים ביותר, PowerShell Studio של טכנולוגיות Sapien. בנוי מהיסוד כ־IDE של PowerShell בלעדית, זה היה טעות להציג רק את יכולתו של PowerShell Studio להמיר PS1 ל־EXEs. עדיין, יש לנו רק כמות מוגבלת של מקום!

כמו PowerShell Pro Tools ב־Visual Studio Code, PowerShell Studio גם דורש דרישות מחמירות לאריזת סקריפטים; כמו .NET Framework 4.8, .NET 5 ל־PowerShell 7 ו־סביבת הרצה של Visual Studio 2015-2019

בהנחה שיש לך את PowerShell Studio מותקן, פתח את PowerShell Studio וצור או פתח סקריפט קיים ב־PowerShell. המדריך הזה ישתמש ב־Get-LatestAppLog3.ps1 סקריפט.

ניווט בהגדרות

לפני שתמיר סקריפט ב־PowerShell Studio, עליך ללמוד תחילה את המגוון של אפשרויות שינוי ההתנהגות של ה־EXE שתקבל.

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

Packaging Script To An Executable File

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

סקריפט המנוע

המחלקה סקריפט מתמקדת בפלטפורמת היעד ובמנוע הסקריפט להידרדר את קובץ ה־executable שלך.

התחל עם בחירת היעד שלך. יש לך אפשרות לבחור בגרסה של Windows בגודל 32 ביט או 64 ביט, או תוכל לבחור את שתיהן לגמישות. PowerShell Studio ייצור קובץ EXE עבור כל פלטפורמה שתבחר כאן.

Setting up Target Platform And PowerShell Scrip Engine

הגדרות פלט

הקטע הזה מכיל אפשרויות להגדרת איך קובץ ה-EXE ייראה לאחר ההידור.

  • קובץ פלט – שם ה-EXE התוצאתי.

אין לכלול סיומת קובץ (.exe) מאחר והיא תתקבל אוטומטית עבורך עבור השדה.

  • תיקיית פלט – המקום שבו PowerShell Studio תשמור את קובץ הנפתח.
  • פתור וכלול סקריפטים חיצוניים – וודא שאפשרות זו מסומנת אם יש לך סקריפטים תלויים בסקריפט הראשי שלך. אם אינך מפעיל את זה, סקריפטים חיצוניים יתעלמו בעת ההידור של קובץ ה-EXE שלך.

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

  • חתימה – מקום שבו תוכל לחפש תעודת אישור כדי לחתום על ה-EXE יחד עם סיסמת התעודה (אם יש).
Managing The Output Settings For The Executable File

קבצי סמל

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

כדי להוסיף קובץ סמל, לחץ על לחצן ההוספה של הקובץ או פשוט גרור ושחרר את קובץ הסמל בקטע קבצי הסמל.

Add Icon Files

הגבלות

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

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

כפי שאתה רואה למטה, יש לך שליטה מלאה על מתי ה-EXE התוצאתי יתבצע.

Adding Security Via Execution Restrictions

מידע על גרסה

כאשר PowerShell Studio יוצרת EXE, ה-EXE מכיל תכונות קובץ שונות. בקטע מידע על גרסה, תוכל להגדיר איך נראות התכונות הללו.

כאן תוכל להגדיר דברים כמו גרסת קובץ, גרסת מוצר, זכויות יוצרים וכו'. ניתן לראות את כל התכונות הזמינות למטה.

Setting File Version Information

אפשרויות בנייה

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

נניח שתרצה להריץ קצת קוד ישירות לאחר ש- PowerShell Studio מסיים ליצור את ה-EXE. כדי לעשות זאת, לחץ על הכפתור חדש (הוספה) בתיבת פקודות אחרי בנייה. שתי הפקודות, הפקודות לפני בנייה ולאחר בנייה, מקבלות פקודות PowerShell ישירות.

בנוסף, תוכל ללחוץ על הוספת קובץ (נקודות פריסה) ולבחור אפליקציה אחרת או סקריפט של PowerShell להפעלה.

Adding Pre-Build or Post-Build Custom Commands To Execute

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

חשבונאות עבור תלות בסקריפטים חיצוניים של PowerShell

A PowerShell script sometimes isn’t a self-contained unit. A script can also call other scripts. When converting to an EXE, some of the tools discussed here do not automatically find these dependent scripts and compile them.

כאשר סקריפט מכיל הפניה לסקריפט אחר והסקריפט הזה מומר לקובץ EXE, הנתיב יכול להשתנות. כאשר זה קורה, הקוד של PowerShell בתוך הקובץ EXE לא יכול למצוא את הסקריפט התלוי והוא נכשל.

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

אם אתה מתכוון להמיר PS1 לקובץ EXE והסקריפט הזה קורא לסקריפטים אחרים באותו התיקייה, הוסף את קטע הקוד הבא לראש הסקריפט שלך.

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

if ($MyInvocation.MyCommand.CommandType -eq "ExternalScript")
 { $ScriptPath = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition }
 else
 { $ScriptPath = Split-Path -Parent -Path ([Environment]::GetCommandLineArgs()[0]) 
     if (!$ScriptPath){ $ScriptPath = "." } }

השוואת תכונות

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

Features Comparison

Source:
https://adamtheautomator.com/ps1-to-exe/