کار با JSON، CSV و XML در PowerShell

کار با JSON، CSV و XML در PowerShell

نوشته شده توسط: مهرداد صلاحی
تاریخ انتشار: ۱۲ دی ۱۴۰۰
آخرین بروزرسانی: ۱۷ تیر ۱۴۰۳
زمان مطالعه: 18 دقیقه
۰
(۰)

مقدمه

خیلی مواقع برای مدیران شبکه و یا کارشناسان DevOps و پشتیبان نیاز هست تا گزارشی از سیستم تهیه کرده و آن را در قالب نوع خاصی از فایل مثل XML و یا … در بیاورند. این کار در پاورشل به راحتی آب خوردن است و کافی است این کار را در پاورشل و با استفاده از دستورات سری ConvertTo انجام دهند. امّا برخی مواقع هم پیش می‌آید که ما فایلی داریم و قصد داریم از دل آن گزارش‌هایی را بیرون بکشیم. در این مواقع باید چه کرد؟!
پاسخ ساده است. باز هم دستورات پاورشل و استفاده از دستورات سری ConvertFrom. برای آموزش این قسمت تا آخر مقاله همراه من باشید.

اجرای Powershell

برای اجرای برنامه پاورشل، کافیست از منوی Run (کلید پنجره + R) عبارت Powershell را تایپ و در نهایت اجرا کنیم. بعد از این کار، محیط پاورشل باز می‌شود و ما قادر خواهیم بود دستورات خود را وارد و اجرا کنیم.

پردازش محتویات فایل JSON

کار را با فایل json آغاز می‌کنیم. ما یک فایل json با محتویات زیر داریم:

برای پردازش این فایل در پاورشل ابتدا توسط دستور Get-Content محتویات فایل را خوانده و در یک متغیر می‌ریزیم. دقت داشته باشید دستور Get-Content محتویات فایل را واکشی می‌کند. این محتویات به صورت یک رشته (آبجکت) می‌باشد.

با صدا زدن متغیر، محتویات فایل json در خروجی نمایش داده می‌شود. در ظاهر این خروجی شبیه فرمت یک فایل json است، ولی در واقع اینطور نیست. ما نمی‌توانیم محتویات را پردازش کنیم.
برای اینکه فرمت محتویات خوانده شده کاملاً به صورت json در دسترس باشد، از دستور ConvertFrom-Json استفاده می‌کنیم. دستور را به شکل زیر اصلاح و دوباره اجرا می‌کنیم.همانطور که ملاحظه می‌کنید، خروجی تغییر کرد و به صورت یک خط نشان داده شد. به فیلد People دقت کنید. حال اگر من این فیلد (خصوصیت) را از متغیر $json صدا بزنم، خروجی زیر به من نشان داده خواهد شد:

با استفاده از دستور ConvertFrom-Json محتویات فایل را به قالب مختص آن در آوردیم. حال قادر خواهیم بود فایل را پردازش کنیم. به طور مثال، با استفاده از قابلیت شرط‌گذاری در پاورشل (دستور Where-Object)، افراد زیر ۲۵ سال را انتخاب می‌کنیم. به شرط و خروجی آن در شکل زیر دقت کنید:

پردازش محتویات فایل CSV

برای پردازش محتویات یک فایل CSV هم منطق کار به همان صورت بالا است. فایل CSV زیر را در نظر بگیرید:نکته: در فایل‌های CSV‌ معمولاً سطر اول نام فیلد قرار می‌گیرد. اگر به سطر اول نگاه کنید،‌ نام فیلدها را مشاهده می‌کنید.
برای پردازش این فایل هم ابتدا محتویات آن را خوانده و سپس آن را تبدیل به فرمت CSV می‌کنیم. مراحل کار در شکل زیر نشان داده می‌شود:من برای نمایش رکوردها، از فرمت جدول (Format-Table) استفاده کردم. همونطور که می‌بینید تعداد رکوردها خیلی زیاد است. برای فهمیدن تعداد رکوردها از دستور زیر استفاده می‌کنم:

برای شرط‌گذاری هم می‌توانیم از دستور Where-Object استفاده کنیم. مثلاً ما قصد داریم رکوردهایی را واکشی کنیم که مقدار فیلد Period آنها برابر با ۲۰۲۰.۰۳ می‌باشد. برای نوشتن این دستور طبق شکل زیر عمل می‌کنیم:اگر به مقادیر فیلد Period دقت کنید، می‌بینید که شرط اعمال شده است. برای فهمیدن تعداد رکوردهایی که حاوی این شرط هستند، کافیست دستور فوق را ابتدا در یک متغیر ریخته و سپس تعداد آن را با استفاده از خصوصیت Count به دست بیاوریم. شکل زیر این کار را برای ما انجام می‌دهد.

پردازش محتویات فایل XML

نحوه خواندن فایل XML با دو فرمت قبلی کمی متفاوت است. ابتدا فایل xml زیر را در نظر بگیرید:در سری دستورات ConvertFrom، دستوری برای فایل XML وجود ندارد. برای خواندن فایل xml، ما از کلاس‌های داخلی پاورشل و مفهومی به نام Casting استفاده می‌کنیم. Casting در معنای خیلی ساده به تبدیل نوع داده یک متغیر گفته می‌شود. در شکل زیر ما محتویات فایل را خوانده و با استفاده از مفهوم Casting آن را به فرمت xml تبدیل می‌کنیم. به نحوه خواندن فایل xml دقت کنید:

هر دو دستور یک کار را انجام می‌دهد. عملیات Casting می‌تواند قبل یا بعد از خواندن فایل صورت پذیرد. اگر ما دو متغیر را با هم مقایسه کنیم، هیچ تفاوتی با هم نخواهند داشت. شکل زیر گویای این مطلب است.برای خواندن رکوردهای فایل xml کافیست المان آن را صدا بزنیم. اگر فایل xml را ملاحظه کنید (شکل ابتدای مبحث XML)، می‌بینید که المان ریشه برابر با CATALOG است و سپس رکوردها با المان CD از هم تفکیک شده‌اند. برای نمایش این رکوردها در پاورشل کافیست طبق شکل زیر عمل کنیم:برای اعمال شرط هم مطابق معمول از دستور Where-Object استفاده می‌کنیم. مثلاً قصد داریم رکوردهایی را نشان دهیم که سال ساخت آن (YEAR) بیشتر از ۱۹۹۰ باشد. برای این کار طبق شکل زیر عمل می‌کنیم:

حرف آخر

با استفاده از قابلیت ‌های اسکریپت ‌نویسی در Powershell ، قادر خواهیم بود به راحتی محتویات فایل ‌ها را خوانده و آن ‌ها را پردازش کنیم. فرمت‌ های json، csv و xml فرمت‌ های رایجی از فایل‌ ها هستند که بین برنامه‌نویس‌ ها مشترک هست. با استفاده از قابلیت‌ های پاورشل، خیلی راحت قادر به پردازش فایل ‌های مذکور هستیم و قادر خواهیم بود گزارش‌ های مورد نیاز خود و سازمان را تولید و پردازش کنیم.

چه رتبه ای می‌دهید؟

میانگین ۰ / ۵. از مجموع ۰

اولین نفر باش

title sign
معرفی نویسنده
مهرداد صلاحی
مقالات
2 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
مهرداد صلاحی
title sign
دیدگاه کاربران