توجيه إخراج PowerShell إلى ملف باستخدام Out-File: دليل كامل

إذا كنت في السوق بحثًا عن أمر PowerShell يمكنه تخزين الناتج في ملف نصي، فأنت محظوظ. على وشك أن تتعلم كيفية استخدام أمر Out-File في PowerShell بالإضافة إلى معلمته الشهيرة Out-File -Append أيضًا!

كيف يعمل Out-File؟

هذا الأمر في PowerShell بسيط بطبيعته؛ فهدفه الوحيد هو تخزين الناتج الذي يتم استقباله وتخزينه في ملف نصي.

تم تصميمه ليحل محل مشغل التوجيه للناتج القياسي (>). حتى من أيام DOS، كنا نستطيع توجيه الناتج إلى ملف. هذا الأمر هو الطريقة في PowerShell للقيام بذلك.

يُستخدم أمر Out-File عادةً في نهاية خط الأوامر في PowerShell. هدفه الوحيد هو إرسال الناتج الخام مباشرةً إلى ملف نصي بدون مراعاة. هناك طرق بسيطة لتعديل كيفية كتابة هذا الناتج.

إرسال الناتج إلى ملف

لنفترض أن لديك سكريبت يُرجع قائمة بجميع خدمات Windows على جهاز الكمبيوتر الخاص بك. عند تشغيل Get-Service، ستتلقى جميع الكائنات التي قد تتوقعها على وحدة التحكم.

لكن ربما ترغب في حفظ هذا الناتج في ملف نصي. أمر Out-File هو طريقة رائعة للقيام بذلك. يمكنك استخدام Out-File عن طريق توصيل أي شيء تقريبًا إليه عبر أنبوبة البيانات.

يمكنك أن ترى أدناه، تم إرسال مخرجات Get-Service إلى الأداة النصية التي أنشأت ملف نصي يسمى 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

تغيير الإخراج

بشكل افتراضي، ستحاول هذه الأداة النصية تكرار ما هو معروض على وحدة التحكم ولكن هناك بعض الطرق للتلاعب به. على سبيل المثال، يحتوي الأداة النصية على معلمة 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

في سيناريو العمل الحقيقي، تعمل هذه الأداة النصية ولكن هناك طرق أفضل لتخزين الإخراج في ملف.

هذه الأداة النصية لا توفر أي خيارات حقيقية للتلاعب بالإخراج. إنها ببساطة تحفظ الإخراج بالضبط كما هو معروض في وحدة التحكم. هذه الأداة النصية مشابهة لسجل PowerShell الذي يكتب كل شيء مباشرة إلى ملف نصي.

\سيكون لدى Add-Content أو Set-Content دائمًا مزيد من المرونة ولكن إذا كنت بحاجة إلى طريقة سريعة للحصول على إخراج PowerShell إلى ملف، فإن Out-File هو الطريقة المناسبة.

ذات الصلة: Set-Content: الطريقة في PowerShell للكتابة إلى ملف

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