10Sep
כאשר אתה זקוק למערך נתונים לבדיקה או להדגמה, וערך זה צריך לייצג פרטים אישיים מזהים( PII), בדרך כלל אינך רוצה להשתמש בנתונים אמיתיים המייצגים אנשים אמיתיים.הנה, נלמד אותך איך אתה יכול להשתמש PowerShell כדי ליצור רשימה של שמות אקראיים ומספרי טלפון רק עבור אירוע כזה.
מה שאתה צריך
לפני שתתחיל, יש כמה כלים ומידע שאתה צריך:
PowerShell
סקריפט זה פותח באמצעות PowerShell 4.0, וכן נבדק עבור תאימות עם PowerShell 2.0.PowerShell 2.0 ואילך כבר מובנית ל- Windows מאז Windows 7. הוא זמין גם עבור Windows XP ו- Vista כחלק מ- Windows Management Framework( WMF).להלן פרטים נוספים וקישורים להורדות.
- PowerShell 2.0 מגיע עם Windows 7. Windows XP SP3 ו- Vista( SP1 ומעלה) משתמשים יכולים להוריד את הגירסה המתאימה של WMF ממיקרוסופט ב- KB968929.זה לא נתמך על XP SP2 או למטה, או Vista ללא SP1.
- PowerShell 4.0 מגיע עם Windows 8.1.משתמשי Windows 7 SP1 יכולים לשדרג אליו כחלק מעדכון WMF ממרכז ההורדות של Microsoft.זה לא זמין עבור XP או Vista.
שמות
יהיה עליך כמה רשימות של שמות להאכיל לתוך מחולל אקראי.מקור מצוין עבור
הרבה שמות, ומידע לגבי הפופולריות שלהם( אם כי לא יהיה בשימוש עבור סקריפט זה), הוא מפקד ארצות הברית.את הרשימות הזמינות בקישורים להלן הם גדולים מאוד, אז אולי כדאי לקצץ אותם קצת אם אתה מתכנן להיות יצירת הרבה שמות ומספרים בבת אחת.על מערכת הבדיקה שלנו, כל שם / מספר זוג לקח בערך 1.5 שניות כדי ליצור באמצעות רשימות מלא אבל המילים שלך ישתנו בהתאם מפרט המערכת שלך.- שמות משפחה
- שמות זכרים
- שמות משפחה
שמות אישיים
ללא קשר למקור שבו אתה משתמש, יהיה עליך ליצור שלושה קובצי טקסט שהסקריפט יכול להשתמש בהם כבריכות לבחירת השם שלו.כל קובץ צריך להכיל רק שמות, ורק שם אחד לכל שורה.אלה צריכים להיות מאוחסנים באותה תיקייה כמו סקריפט PowerShell שלך.
Surnames.txt צריך להכיל את שמות המשפחה שאתה רוצה את הסקריפט לבחירה.דוגמה:
סמית 'ג' ונסון ויליאמס ג 'ונס בראוןMales.txt צריך להכיל את השמות הפרטיים שאתה רוצה את התסריט לבחור מתוך.דוגמה:
ג'יימס ג'ון רוברט מייקל וויליאםFemales.txt צריך להכיל את השמות הפרטיים הנשיים שאתה רוצה את התסריט לבחור מתוך.דוגמה:
מרי Patricia לינדה ברברה אליזבתכללים מספרי טלפון
אם אתה רוצה להיות בטוח שמספרי הטלפון שלך אינם תואמים את מספר הטלפון האמיתי של מישהו, הדרך הקלה ביותר היא להשתמש קוד "555" ידוע.אבל אם אתה הולך להיות מציג נתונים להגדיר עם הרבה מספרי טלפון, כי 555 יתחילו להיראות די מונוטוני ממש מהר.כדי להפוך את הדברים למעניינים יותר, ניצור מספרי טלפון אחרים המפרים את חוקי מספור צפון אמריקה( NANP).להלן מספר מספרי טלפון לא חוקיים, המייצגים כל מחלקה של מספר שיווצר על-ידי סקריפט זה:
- ( 157) 836-8167
מספר זה אינו חוקי מכיוון שקודי אזור אינם יכולים להתחיל עם 1 או 0. - ( 298) 731-6185
מספר זה אינו חוקי משום שה - NANP אינו מקצה קודי אזור עם 9 ספרות שנייה. - ( 678) 035-7598
מספר זה אינו חוקי מכיוון שקודי Exchange אינם יכולים להתחיל עם מספר 1 או 0. - ( 752) 811-1375
מספר זה אינו חוקי מפני שקודי Exchange אינם יכולים להסתיים בשני שלבים. - ( 265) 555-0128
מספר זה אינו חוקי מאחר וקוד Exchange הוא 555, ו- מזהה המנוי הוא בטווח שמור למספרים פיקטיביים. - ( 800) 555-0199
מספר זה הוא המספר היחיד 800 עם קוד 555 Exchange אשר שמורות לשימוש כמספר פיקטיבי.
שים לב כי הכללים הנ"ל כפופים לשינוי ועשויים להשתנות בהתאם לשיפוט.אתה צריך לעשות מחקר משלך כדי לאמת את הכללים הנוכחיים אשר חלים על המקום שבו אתה תהיה יצירת מספרי טלפון.פקודות נפוצות
יש כמה פקודות שכיחות למדי, כי הם הולכים לשמש לאורך כל התסריט הזה, אז אתה צריך לקבל מושג בסיסי של מה הם מתכוונים לפני שאנחנו לצלול לתוך ממש כותב את זה.
- ForEach-Object לוקח מערך, או רשימה של אובייקטים ומבצע את הפעולה שצוין על כל אחד מהם.בתוך גוש Script של אובייקט ForEach, המשתנה $ $ _ מתייחס להפניה של הפריט הנוכחי המעובד.
- אם. .. אחר הצהרות לאפשר לך לבצע פעולה רק אם תנאים מסוימים הם נפגשו,( אופציונלי) לציין מה צריך לעשות כאשר תנאי זה לא נפגשו.
- Switch הצהרות הן כמו אם הצהרות עם יותר אפשרויות.המתג יבדוק אובייקט כנגד מספר תנאים, והפעל את כל קובצי הסקריפט שצוין עבור התנאים שהאובייקט תואם.כמו כן, ניתן לבחור בלוק ברירת מחדל שיפעל רק אם לא יתאימו תנאים אחרים.משפטי החלפה משתמשים גם במשתנה $ _ כדי להתייחס לפריט הנוכחי המעובד.
- בעוד הצהרות מאפשרות לך לחזור על בלוק סקריפט כל הזמן, כל עוד מתקיים תנאי מסוים.ברגע שמשהו קורה שגורם למצב לא להיות נכון יותר כאשר הבלוק סקריפט הוא סיים, הלולאה יוצאת.
- לנסות. .. לתפוס הצהרות לעזור עם טיפול בשגיאה.אם משהו משתבש עם הבלוק סקריפט שצוין לנסות, בלוק לתפוס יפעל.
- Get-Content עושה מה שהוא אומר על הפח.הוא מקבל את התוכן של אובייקט מסוים - בדרך כלל קובץ.זה יכול לשמש כדי להציג את התוכן של קובץ טקסט במסוף או, כמו בסקריפט זה, להעביר את התוכן לאורך צינור לשימוש עם פקודות אחרות.
- Write-Host מעביר דברים לקונסולה.פעולה זו משמשת להצגת הודעות למשתמש, ואינה כלולה בפלט של הסקריפט אם הפלט מקבל הפניה מחדש.
- כתיבה פלט למעשה מייצר פלט.בדרך כלל, זה נזרק אל המסוף אבל זה יכול להיות גם מנותב על ידי פקודות אחרות.
יש פקודות אחרות בסקריפט, אבל נסביר אותן כשאנחנו הולכים.
בניית תסריט
עכשיו הגיע הזמן לקבל את הידיים מלוכלכות.
חלק 1: מתכונן ללכת
אם אתה אוהב את התסריט שלך להתחיל לרוץ מתוך מסוף נקי, הנה השורה הראשונה שאתה רוצה את זה.
Clear-Hostעכשיו שיש לנו מסך נקי, הדבר הבא שאנחנו רוצים לעשות הוא לבדוק את התסריט כדי לוודא שכל מה שהוא צריך הוא במקום.כדי לעשות זאת, אנחנו צריכים להתחיל לספר את זה איפה לחפש, ומה לחפש.
$ ScriptFolder = פיצול נתיב $ MyInvocation. MyCommand. Definition -Parent $ RequiredFiles =( 'Males.txt', 'Females.txt', 'Surnames.txt')השורה הראשונה שם שימושית מאוד עבור כל סקריפט.הוא מגדיר משתנה המצביע על התיקייה המכילה את התסריט.זה חיוני אם הסקריפט שלך צריך קבצים אחרים הממוקמים באותה ספרייה עצמה( או נתיב יחסי ידוע מתוך ספריה זו), כי אחרת תיתקל שגיאות אם וכאשר תנסה להפעיל את התסריט בזמן שאתה נמצאמדריך עבודה.
השורה השנייה יוצרת מערך של שמות קבצים הדרושים להפעלת הסקריפט כראוי.נשתמש בזה, יחד עם המשתנה ScriptFolder $, בחלק הבא שבו אנו בודקים כדי לוודא קבצים אלה נמצאים.
$ נדרשForEach-Object{ אם( !) נתיב בדיקה $ ScriptFolder \ $ _ ")){ כתוב מארח{ $ _ לא נמצא.-ForegroundColor Red $ MissingFiles ++}}נתח סקריפט זה שולח את המערך RequiredFiles $ לתוך גוש ForEach-Object.בתוך בלוק Script זה, משפט ה- if משתמש ב- Test-Path כדי לראות אם הקובץ שאנחנו מחפשים הוא המקום שאליו הוא שייך.Test-Path היא פקודה פשוטה, כאשר נתיב קובץ, מחזירה תגובה בסיסית או שקרית אמיתית כדי לספר לנו אם הנתיב מצביע על משהו שקיים.סימן הקריאה שם הוא מפעיל לא , אשר הופך את התגובה של נתיב מבחן לפני העברת אותו על משפט אם.אז אם Test-Path מחזירה false( כלומר, הקובץ אותו אנו מחפשים אינו קיים), הוא יומר ל true כך שההצהרה if תפעיל את בלוק הסקריפט.
דבר נוסף לציין כאן, אשר ישמש לעתים קרובות בתסריט זה, הוא השימוש ציטוטים כפולים במקום ציטוטים בודדים.כאשר אתה שם משהו במרכאות בודדות, PowerShell מתייחס אליו כמחרוזת סטטית.מה הוא ציטוטים בודדים יועברו בדיוק כפי שהוא.ציטוטים כפולים מספרו ל- PowerShell לתרגום המשתנים ופריטים מיוחדים אחרים בתוך המחרוזת לפני העברתו.הנה, ציטוטים כפולים אומר שבמקום לרוץ מבחן נתיב '$ ScriptFolder \ $ _' אנחנו באמת נעשה משהו יותר כמו מבחן נתיב 'C: \ Scripts \ Surnames.txt' ( בהנחה שלךScript הוא ב- C: \ Scripts, ו- ForEach-Object פועל כעת על 'Surnames.txt').
עבור כל קובץ שלא נמצא, Write-Host יפרסם הודעת שגיאה באדום כדי לספר לך איזה קובץ חסר.לאחר מכן הוא מוסיף את המשתנה $ MissingFiles אשר ישמש את הפריט הבא, לשגיאה ולסגור אם היו קבצים חסרים.
אם( $ MissingFiles){ Write-Host "לא ניתן למצוא $ $ MissingFiles קובץ המקור.-ForegroundColor האדום הסרת משתנה ScriptFolder, RequiredFiles, MissingFiles יציאההנה עוד טריק מסודר אתה יכול לעשות עם הצהרות.רוב המדריכים תוכל לראות אם הצהרות יגידו לך להשתמש במפעיל כדי לבדוק תנאי ההתאמה.לדוגמה, כאן נוכל להשתמש ב- אם( $ MissingFiles -gt 0) כדי לראות אם $ MissingFiles גדול מאפס.עם זאת, אם אתה כבר משתמש בפקודות שמחזירות ערך בוליאני( כמו בבלוק הקודם שבו השתמשנו ב- Test-Path) זה לא הכרחי.אתה יכול גם לעשות את זה בלי מקרים כאלה, כאשר אתה רק בודק כדי לראות אם מספר הוא לא אפס.כל מספר שאינו אפס( חיובי או שלילי) מקבל טיפול נכון, בעוד אפס( או, כפי שעשוי לקרות כאן, משתנה לא קיים) יטופל כוזב.
אם $ MissingFiles קיים, והוא לא אפס, Write-Host יפרסם הודעה לספר לך כמה קבצים היו חסרים וכי התסריט יבטל.לאחר מכן, Remove-Variable ינקה את כל המשתנים שיצרנו ויציאה תצא מהסקריפט.במסוף PowerShell הרגיל, הסר- Variable אינו נחוץ באמת עבור מטרה מסוימת זו, כי משתנים שנקבעו על ידי סקריפטים מושלכים בדרך כלל כאשר הסקריפט יוצא.עם זאת, PowerShell ISE מתנהג קצת אחרת אז אולי כדאי לך לשמור את זה אם אתה מתכנן להפעיל את התסריט משם.
אם כל הדברים בסדר, הסקריפט ימשיך.הכנה נוספת לעשות הוא כינוי שאנחנו נשמח מאוד מאוחר יותר.
כינויים חדשים g Get-Randomכינויים משמשים ליצירת שמות חלופיים עבור פקודות.אלה יכולים לסייע לנו להכיר את הממשק החדש( לדוגמה: PowerShell כולל שמות כמו - & gt; Get-ChildItem ו- cat - & gt; Get-Content ) או לבצע הפניות קצרותעבור פקודות בשימוש נפוץ.כאן, אנחנו עושים מאוד קצר התייחסות ידנית עבור הפקודה Get-Random אשר הולך לשמש הרבה יותר מאוחר.
קבל אקראי די הרבה עושה מה שמה מרמז.בהתחשב במערך( כמו רשימה של שמות) כקלט, הוא בוחר פריט אקראי מהמערך ויורק אותו החוצה.זה יכול לשמש גם כדי ליצור מספרים אקראיים.הדבר שיש לזכור על Get-Random ומספרים הוא כי, כמו פעולות מחשב רבות אחרות, זה מתחיל לספור מאפס.אז במקום Get-Random 10 כלומר יותר טבעי "תן לי מספר 1-10" זה באמת אומר "תן לי מספר מ 0 עד 9." אתה יכול להיות ספציפי יותר לגבי הבחירה מספר, כך קבל- אקראיות מתנהג יותר כמו שאתה מצפה באופן טבעי, אבל אנחנו לא צריכים את זה בכתב זה.
חלק 2: קבלת קלט משתמש ולהתחיל לעבוד
בעוד סקריפט שיוצר רק שם אקראי אחד &מספר הטלפון הוא נהדר, זה הרבה יותר טוב אם את התסריט מאפשר למשתמש לציין כמה שמות &מספרים שהם רוצים לקבל אצווה אחת.למרבה הצער, אנחנו לא יכולים באמת לסמוך על המשתמשים תמיד לתת קלט חוקי.אז, יש קצת יותר מאשר זה רק $ UserInput = Read-Host .
בעוד( ! $ ValidInput){ נסה{ [int] $ UserInput = קריאה-מארח -פרומפט 'פריטים שיווצרו' $ ValidInput = $ true} קלט{ Write-Host 'קלט לא חוקי.הזן מספר בלבד. '-ForegroundColor Red}}ההצהרה בזמן שמעליה בודקת, ושוללת, את הערך של $ ValidInput.כל עוד ValidInput $ $ הוא שקר, או לא קיים, היא תמשיך looping דרך הבלוק התסריט שלה.
משפט הניסיון לוקח קלט משתמש, דרך Read-Host, ומנסה להמיר אותו לערך שלם.(זה [int] לפני Read-Host.) אם זה מצליח, זה ייקבע $ ValidInput כדי נכון, כך לולאה בזמן יכול לצאת.אם לא מצליח, בלוק לתפוס הודעות שגיאה, כי $ ValidInput לא לקבל מוגדר, לולאה בזמן יחזור סביב ולהנחות את המשתמש שוב.
ברגע שהמשתמש נתן מספר כהלכה כקלט, אנחנו רוצים שהסקריפט יודיע שהוא עומד להתחיל לעשות את העבודה שלו ואז לעשות את זה.
Write-Host "` nGenerating $ UserInput שמות ומספרי טלפון אנא המתן בסבלנות. `N" 1. . $ UserInput |ForEach-Object{ & lt; # INSERT RANDOM NAME &NUMBER Generator כאן # & gt;}אל דאגה, אנחנו לא הולכים לעזוב אותך לבד כדי להבין את שם אקראי &מספר קוד הגנרטור - -.זה רק הערה מיקום כדי להראות לך איפה את החלק הבא( שבו העבודה האמיתית נעשה) הולך להשתלב.
קו כתוב מארח הוא די פשוט.זה פשוט אומר כמה שמות ומספרי טלפון התסריט הולך לייצר, ומבקש מהמשתמש להיות סבלני בזמן התסריט עושה את העבודה שלה. `n בתחילת ובסוף המחרוזת הוא להוסיף שורה ריקה לפני ואחרי זה פלט, רק כדי לתת לו קצת הפרדה חזותית בין השורה קלט את רשימת השמות &מספרים.היו מודעים לכך שמדובר במבטא חמור "AKA" - בדרך כלל על הכרטיסייה שלמעלה, משמאל ל -1) ולא על גבי גרש או ציטוט בודד מול כל n .
החלק הבא מציג דרך אחרת שבה ניתן להשתמש בלולאה ForEach-Object.בדרך כלל, כאשר אתה רוצה לחסום סקריפט להפעיל מספר מסוים של פעמים, תוכל להגדיר רגיל עבור לולאה כמו עבור( $ x = 1; $ x-$ $ UserInput, $ x + +){ & lt; # INSERT SCRIPTהנה # & gt;}. ForEach-Object מאפשר לנו לפשט את זה על ידי האכלה זה רשימה של מספרים שלמים, במקום להגיד את זה כדי לעשות משהו עם מספרים שלמים אלה, אנחנו פשוט נותנים לו בלוק סקריפט סטטי לרוץ עד שהוא נגמר של מספרים שלמים לעשות את זה.
חלק 3: יצירת שם אקראי
יצירת השם היא החלק הפשוט ביותר של שאר התהליך.זה מורכב רק משלושה שלבים: בחירת שם משפחה, בחירת מין, בחירת שם פרטי.זוכרים כי כינוי שעשינו עבור Get-Random זמן מה?הגיע הזמן להתחיל לשים את זה כדי להשתמש.
$ Surname = Get-Content "$ ScriptFolder \ Surnames.txt" |g $ זכר = g 2 אם( $ זכר){ $ FirstName = Get-Content "$ ScriptFolder \ Males.txt" |g} אחר{ $ FirstName = Get-Content "$ ScriptFolder \ Females.txt" |g}השורה הראשונה לוקחת את רשימת שמות המשפחה שלנו, מזינה אותה לתוך הבוחר האקראי ומקצה את השם הנבחר $ $ Surname.
השורה השנייה בוחרת את המין האנושי.זכור איך Get-Random מתחיל לספור מאפס, ואיך אפס הוא שקר וכל דבר אחר נכון?כך אנו משתמשים ב- Get-Random 2 ( או g 2 קצר יותר בזכות הכינוי שלנו - הן תוצאה של בחירה בין אפס או אחד) כדי להחליט אם האדם שלנו הוא זכר או לא.ההצהרה אם / אחר אחר כך בוחר באופן אקראי שם פרטי זכר או נקבה בהתאם.
חלק 4: יצירת מספר טלפון אקראי
הנה החלק ממש כיף.מוקדם יותר, הראינו לך איך יש כמה דרכים אתה יכול לעשות מספר טלפון לא חוקי או פיקטיבי.מכיוון שאיננו רוצים שכל המספרים שלנו ייראו דומים מדי זה לזה, נבחר באופן אקראי פורמט מספר לא חוקי בכל פעם.הפורמטים שנבחרו באופן אקראי יוגדרו על ידי קוד האזור שלהם ו- Exchange קוד, אשר תאוחסן באופן קולקטיבי כקידומת $.($ 10) $( g 10) $( g 10) $ $( g 10) $( g 10) $( g 10)"$ 1( $ 10) $( g 10) 9 $( g 10)) $ 10( g 10) $( g 10) $( g 10)"} 2{ $ Prefix = "($ 10)$( g 10) $( g 2) $( g 10) $( g 10) "} 3{ $ Prefix ="( $ 10 g) $( g 10) $( g 10)) $( g 10) 11 "}}{ {prefix ="( $ g( 10) $( g 10) $( g 10)) 555 "}}
השורה הראשונה היא דור מספר אקראי פשוט לבחור איזה פורמטאנחנו הולכים לעקוב אחר מספר הטלפון.לאחר מכן, ההצהרה לעבור לוקח את זה בחירה אקראית ומייצר קידומת $ בהתאם.זכור את הרשימה של סוגי מספרי טלפון לא חוקיים?ערכי NumberFormat $ 0-3 תואמים את ארבעת הראשונים ברשימה זו.ערך 4 יכול ליצור אחד משני האחרונים, שכן שניהם משתמשים "555" קוד Exchange.
כאן, אתה יכול גם לראות שאנחנו משתמשים בטריק אחר עם ציטוטים כפולים.ציטוטים כפולים לא רק מאפשרים לך לפרש משתנים לפני מחרוזת מקבל פלט - הם גם מאפשרים לך תהליך בלוקים סקריפט.לשם כך, עוטפת את בלוק התסריט כך: "$( & lt; #SCRIPT HERE # & gt;)" .אז מה יש לך לעיל הוא הרבה ספרות אקראיות בנפרד, עם כמה מהם או מוגבלים בטווח שלהם או להגדיר באופן סטטי על פי הכללים שאנחנו צריכים לעקוב.לכל מחרוזת יש גם סוגריים ורווחים, כפי שבדרך כלל מצפים לראות בקוד אזור ו- Exchange Code.
הדבר האחרון שאנחנו צריכים לעשות לפני שאנחנו מוכנים פלט את השם שלנו &מספר הטלפון הוא ליצור מזהה מנוי, אשר יאוחסן כמו $ סיומת.($ 10) $ $( g 10) ${ g $ 10} $( g 10) "} 4{ $ switch( $ prefix){ {$ $ = -lt 4}{ $ $ g =(800) 555 '{$ Suffix =' 0199 '} ברירת מחדל{ $ Suffix = "01 $( g 10) $( g 10)"}}}
בגלל הכללים המיוחדים עבור 555 מספרים, אנחנו לא יכולים פשוטליצור ארבע ספרות אקראיות עבור סוף כל מספר טלפון התסריט שלנו הולך לעשות.אז, הבורר הראשון בודק אם אנחנו מתמודדים עם 555 מספר.אם לא, הוא מייצר ארבע ספרות אקראיות.אם זה מספר 555, הבורר השני בודק את 800 אזור החיוג.אם זה תואם, יש רק אחד Suffix תקף אנחנו יכולים להשתמש.אחרת, מותר לבחור בין כל דבר בין 0100-0199.
שים לב שיש כמה דרכים שונות לבלוק זה יכול להיות כתוב, במקום איך זה.שני הצהרות מתג יכול היה להיות מוחלף עם / אם אחר הצהרות, שכן הם כל לטפל רק שתי אפשרויות.כמו כן, במקום לקרוא במיוחד "4" כאופציה עבור משפט המעבר הראשון, "ברירת המחדל" יכול היה לשמש דומה איך זה נעשה השני מאז זה היה האופציה היחידה שנותרה.הבחירה בין אם / אחר לעומת מתג, או היכן להשתמש במילת המפתח המוגדרת כברירת מחדל במקום ערכים ספציפיים, נוטה לעתים קרובות לעניין של העדפה אישית.כל עוד זה עובד, להשתמש בכל מה שאתה הכי נוח עם.
עכשיו, הגיע הזמן פלט.
כתיבת פלט "$ FirstName $ $ שם משפחה $ קידומת - $ סיומת"זה אחד די פשוט כמו שהוא מקבל את התסריט.זה פשוט פלט את השם הפרטי ושם המשפחה מופרדים על ידי רווחים, ואז רווח נוסף לפני מספר הטלפון.זה המקום שבו מקף רגיל בין קוד Exchange ומנוי מזהה מתווספת גם כן.
כי סוגר הסגירה בתחתית הוא סוף לולאה ForEach-Object מ קודם לכן - להשמיט את זה אם כבר יש לך את זה.
חלק 5: ניקוי והפעלת התסריט
לאחר כל העבודה נעשה, תסריט טוב יודע איך לנקות אחרי עצמו.שוב, המשתנה להסרת מתחת לא ממש נחוץ אם אתה רק הולך להפעיל את התסריט מהמסוף אבל אתה רוצה את זה אם אי פעם מתכנן להפעיל את זה ב- ISE.
הסרת שם פריט: \ g הסר-משתנה ScriptFolder, RequiredFiles, שם משפחה, זכר, FirstName, NumberFormat, קידומת, Suffix, ValidInput, UserInputלאחר שתסיים את כל זה, שמור את התסריט עם סיומת ".ps1"באותה תיקייה כמו קבצי השמות שלך.ודא ExecutionPolicy שלך מוגדר כך סקריפט יכול לרוץ, ולתת לו מערבולת.
הנה צילום מסך של הסקריפט בפעולה:
ניתן גם להוריד קובץ ZIP המכיל את הסקריפט PowerShell ואת קבצי הטקסט עם רשימות השמות, מהקישור הבא.
שם אקראי &מחולל מספר טלפון עבור PowerShell