הפניית פלט PowerShell לקובץ באמצעות Out-File: מדריך מלא

אם אתה בשוק לפקודת PowerShell שיכולה לאחסן את הפלט בקובץ טקסט, אתה מזהה מזל. אתה עומד ללמוד איך להשתמש בפקודת ה־PowerShell Out-File יחד עם הפרמטר הפופולרי שלה, Out-File -Append!

איך עובדת הפקודת Out-File?

הפקודת PowerShell הזו פשוטה בטבעה; מטרתה היחידה היא לאחסן את הפלט שנקבל ולאחסן אותו בקובץ טקסט.

נועדה להחליף את אופרטור ההפניה לפלט (>) התקני. עוד מימי DOS, יכולנו להפנות את הפלט לקובץ. זו הדרך של PowerShell לעשות זאת.

הפקודת Out-File משמשת typic בסופו של צינור ה־PowerShell. מטרתה היחידה היא לשלוח את הפלט הגולמי ישירות לקובץ טקסט ללא תשומת לב. ישנם דרכים מינימליות להתאים איך הפלט הוא נכתב.

שליחת הפלט לקובץ

נניח שיש לך סקריפט שמחזיר רשימה של כל שירותי Windows במחשב שלך. כאשר אתה מפעיל Get-Service, אתה מקבל את כל האובייקטים שאתה יכול לצפות בהם במסוף.

אך אולי תרצה לשמור את הפלט הזה לקובץ טקסט. הפקודת Out-File היא דרך נהדרת לעשות זאת. אתה יכול להשתמש ב־it על ידי שימוש בצינור לכל מה שתרצה.

אתה יכול לראות למטה, הפלט של Get-Service נשלח ל- cmdlet שיצר קובץ טקסט בשם Services.txt המכיל את התצוגה המדויקת שאתה רואה בקונסול.

PS> Get-Service | Out-File -FilePath C:\Services.txt
PS> Get-Content C:\Services.txt
Status   Name               DisplayName

Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity
Stopped  Appinfo            Application Information
Stopped  AppMgmt            Application Management
<SNIP>

מחבר לקובץ

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

אולי אתה מצטבר פלט מהקונסול בקובץ ותרצה להוסיף טקסט לקובץ במקום לדרוס. הפרמטר Append הוא חברך הכי טוב.

על ידי שימוש בפרמטר Out-File -Append אתה יכול לראות למטה, שים לב שאם לא תשתמש בו, ה-C:\File.txt מתווסף. אך, כשאתה מוסיף את הפרמטר Append, הוא מוסיף את הפלט לסופו.

PS> 'foo' | Out-File -FilePath C:\File.txt
PS> Get-Content -Path C:\File.txt
foo
PS> 'foo' | Out-File -FilePath C:\File.txt
PS> Get-Content C:\File.txt
foo
PS> 'foo' | Out-File -FilePath C:\File.txt -Append
PS> Get-Content C:\File.txt
foo foo

שינויי פלט

כברירת מחדל, קובץ ה- cmdlet הזה ינסה לשקף את מה שמוצג בקונסול, אך ישנם דרכים לשנות את זה. לדוגמה, יש ל- cmdlet פרמטר בשם NoNewLine שפשוט מסיר את כל תווי השורה החדשה.

PS> Get-Service | Out-File -FilePath C:\Services.txt -NoNewline
PS> Get-Content C:\Services.txt
Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application La

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

PS> Get-Service | Out-File -FilePath C:\Services.txt -Width 30 
PS> Get-Content C:\Services.txt
Status   Name               DisplayName
------   -----              -----------
Stopped  AJRouter           Al

מסקנה

Out-File

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

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

ה cmdlets Add-Content או Set-Content תמיד יהיו עם גמישות יותר אבל אם נדרשת לך דרך מהירה לקבלת פלט PowerShell לקובץ, Out-File היא הדרך לעבור.

נושא קשור: Set-Content: דרך הפווארשל לכתוב לקובץ

Source:
https://adamtheautomator.com/out-file/