تنسيق جدول PowerShell: تنظيم الإخراج في الأعمدة

PowerShell تمسك بيد المطور إلى حد كبير، ولكنها لا تستطيع قراءة عقلك. لا يمكنها أن تعرف بشكل فطري نوع الإخراج الذي تبحث عنه. ستقدم أفضل تخمين لها من خلال تنسيق افتراضي، ولكن القرار النهائي بشأن كيفية عرض الإخراج يعتمد عليك. باستخدام أمر Format-Table في PowerShell، يمكنك ضبط الإخراج حسب رغبتك.

PowerShell لديه نظام تنسيق يحتوي على إخراج افتراضي وإمكانية تغيير كيفية تنسيق الإخراج على أساس نوع الكائن. إذا كنت لا ترغب في التعلم حول XML وكيفية تنسيق الإخراج دائمًا بطريقة معينة، فلديك أيضًا أوامر مثل Powershell format-table و Format-List و Format-Wide تحت تصرفك. سيقوم ملف PS1XML على نظام الملفات أو استخدام أي من أوامر تنسيق الإخراج بعرض الإخراج بطرق مختلفة.

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

PS> Get-Item -Path C:\Windows\

Directory: C:\
Mode	LastWriteTime		Length	Name
---- 	------------- 		------	----

d-----	11/24/2017 9:57 AM 			Windows

ولكن، قم بتوجيه نفس الأمر إلى Select-Object -Property * وانظر ماذا سيحدث.

PS> Get-Item -Path C:\Windows\ | Select-Object -Property *

PSPath 				: Microsoft.PowerShell.Core\FileSystem::C:\Windows\
PSParentPath 		: Microsoft.PowerShell.Core\FileSystem::C:\
PSChildName 		: Windows
PSDrive				: C
PSProvider 			: Microsoft.PowerShell.Core\FileSystem
PSIsContainer 		: True
Mode 				: d-----
BaseName 			: Windows
Target 				: {C:\Windows}
LinkType 			:
Name 				: Windows
FullName 			: C:\Windows\
Parent 				:
Exists 				: True
Root 				: C:\
Extension 			:
CreationTime 		: 3/18/2017 5:40:20 AM
CreationTimeUtc 	: 3/18/2017 11:40:20 AM
LastAccessTime 		: 11/24/2017 9:57:51 AM
LastAccessTimeUtc	: 11/24/2017 3:57:51 PM
LastWriteTime 		: 11/24/2017 9:57:51 AM
LastWriteTimeUtc 	: 11/24/2017 3:57:51 PM
Attributes 			: Directory

لقد قام PowerShell بإخفاء الكثير من خصائص الكائن عنك لأنه عادةً ما لا تحتاج إلى رؤية كل هذه المعلومات. يوفر PowerShell عرضًا افتراضيًا، لكن هذا لا يعني أن هذا هو الخيار الوحيد لديك. يمكننا تغيير هذا العرض عبر cmdlet الشكل.

أكثر cmdlet تنسيق شعبية هو Format-Table. وفقًا لمساعدة PowerShell:

يقوم cmdlet Format-Table بتنسيق إخراج أمر كجدول بخصائص محددة للكائن في كل عمود. يحدد نوع الكائن التخطيط الافتراضي والخصائص التي يتم عرضها في كل عمود، ولكن يمكنك استخدام معلمة الخاصية لتحديد الخصائص التي تريد رؤيتها.

يمكنك أيضًا استخدام جدول تجزئة لإضافة خصائص محسوبة إلى كائن قبل عرضه وتحديد عناوين الأعمدة في الجدول. لإضافة خاصية محسوبة، استخدم معلمة الخاصية أو GroupBy.

استخدام Powershell Format-Table و Select-Object لاختيار خصائص كائن فردي يبدو أنه متماثل طالما أن قيم الخصائص لا تتجاوز عرض وحدة التحكم الحالية. ولكن بمجرد محاولة عرض الكثير من الكائنات، سترى أن Format-Table يستمر في التنسيق الجدولي بينما Select-Object يعود إلى عرض الخصائص على كل سطر.

PS> Get-Item -Path C:\Windows\ | Select-Object -Property LastAccessTime,Name,LastWriteTime,PSProvider,CreationTime

LastAccessTime 	: 11/24/2017 9:57:51 AM
Name 			: Windows
LastWriteTime 	: 11/24/2017 9:57:51 AM
PSProvider 		: Microsoft.PowerShell.Core\FileSystem
CreationTime 	: 3/18/2017 5:40:20 AM

PS> Get-Item -Path C:\Windows\ | Format-Table -Property LastAccessTime,Name,LastWriteTime,PSProvider,CreationTime

LastAccessTime			Name	LastWriteTime			PSProvider	CreationTime
-------------- 			---- 	------------- 			---------- 	------------
11/24/2017 9:57:51 AM 	Windows 11/24/2017 9:57:51 AM	Microsoft.PowerShell.Core\FileSystem	3/18/2017 5:40:20 AM

سيحاول إخراج Powershell Format-Table عرض المعلومات عبر تنسيق جدولي دائمًا. إذا كانت قيم الخصائص طويلة جدًا ليتم عرضها، فسيقوم بتعويض أي نص مفقود بنقاط تعجب للإشارة إلى توفر معلومات إضافية ولكنها لم تظهر فقط.

الأمر Format-Table يحتوي على العديد من الطرق المختلفة التي يمكن أن يستخدمها لتلاعب في الإخراج. تحقق من الوثائق الكاملة لـ Format-Table عبر Microsoft docs.

Source:
https://adamtheautomator.com/powershell-format-table/