پاورشل برای برنامه‌نویسان

پاورشل برای برنامه‌نویسان

@programming_tips

درسنامه: Pipeline (|) و کار با خروجی دستورات

۱.آشنایی با مفهوم Pipeline

در PowerShell، Pipeline با نماد | نشان داده می‌شود و به شما اجازه می‌دهد خروجی یک Cmdlet را مستقیماً به Cmdlet بعدی بدهید.

به عبارت ساده‌تر:

  • اول Cmdlet یک شی برمی‌گرداند.
  • شما آن شی را به Cmdlet دوم می‌دهید تا روی آن پردازش انجام دهد.

این امکان باعث می‌شود کارهای پیچیده بدون ذخیره موقت داده‌ها و به صورت خطی انجام شوند.


۲. تفاوت Pipeline در PowerShell با Bash یا CMD

  • در Bash و CMD، Pipeline معمولاً متن می‌فرستد (text-based).
  • در PowerShell، Pipeline اشیاء (Objects) می‌فرستد.

این یعنی شما می‌توانید مستقیماً با ویژگی‌ها و متدهای اشیاء کار کنید، نه فقط متن خروجی را پردازش کنید.


۳. نمونه‌های ساده Pipeline

مثال ۱: نمایش پروسه‌ها به ترتیب مصرف CPU

Get-Process | Sort-Object CPU -Descending
  • Get-Process لیست پروسه‌ها را برمی‌گرداند.
  • Sort-Object CPU -Descending آن‌ها را بر اساس مصرف CPU به صورت نزولی مرتب می‌کند.

مثال ۲: انتخاب فقط نام و پردازنده پروسه‌ها

Get-Process | Select-Object ProcessName, CPU
  • Select-Object فقط پراپرتی‌های مشخص شده را نشان می‌دهد.

مثال ۳: فیلتر کردن خروجی

Get-Process | Where-Object {$_.CPU -gt 100}
  • Where-Object خروجی را بر اساس شرط شما فیلتر می‌کند.
  • $_ نماینده هر شیء در Pipeline است.
  • این دستور تمام پروسه‌هایی که CPU بیشتری از 100 دارند را نشان می‌دهد.

۴. ترکیب چند Pipeline

پاورشل اجازه می‌دهد چند Cmdlet را پشت سر هم در یک خط ترکیب کنید:

Get-Process | Where-Object {$_.CPU -gt 100} | Sort-Object CPU -Descending | Select-Object -First 5
  • ابتدا پروسه‌هایی که CPU > 100 دارند انتخاب می‌شوند.
  • سپس آن‌ها بر اساس CPU مرتب می‌شوند.
  • در نهایت فقط ۵ پروسه اول نمایش داده می‌شوند.

این یکی از بزرگ‌ترین قدرت‌های PowerShell است: اجرای چند مرحله پردازش به شکل خطی و بدون ایجاد فایل موقت.


۵. نکات مهم Pipeline

  1. هر چیزی در Pipeline یک شی است، نه متن. بنابراین می‌توانیم پراپرتی‌ها و متدهای آن را مستقیماً دستکاری کنیم.
  2. Pipeline سرعت و خوانایی کد را بالا می‌برد.
  3. می‌توان از Pipeline در اسکریپت‌ها و Automation هم استفاده کرد، نه فقط در محیط CLI.
  4. برای درک بهتر Pipeline، همیشه ابتدا با Get-Member خروجی Cmdlet اول را بررسی کنید.

مثال:

Get-Process | Get-Member

با این کار می‌فهمید هر شی چه پراپرتی‌ها و متدهایی دارد و می‌دانید روی چه چیزی می‌توانید عملیات بعدی را انجام دهید.


۶. تمرین برای شما

۱. لیست فایل‌های یک پوشه را بگیرید و فقط فایل‌های .txt را نشان دهید:

۲. آن‌ها را بر اساس اندازه (Length) مرتب کنید و ۳ فایل بزرگ را نمایش دهید:

۳. خروجی را به یک فایل CSV ذخیره کنید تا بعداً بتوانید از آن استفاده کنید:


🔑 خلاصه‌ی درسنامه:

  • پس Pipeline با نماد | خروجی یک Cmdlet را به Cmdlet بعدی می‌دهد.
  • در PowerShell، Pipeline اشیاء می‌فرستد، نه فقط متن.
  • ترکیب Pipelineها باعث اجرای پردازش‌های پیچیده و خوانا می‌شود.
  • استفاده از Pipeline همراه با Where-Object, Select-Object, Sort-Object و Get-Member قدرت واقعی PowerShell را نشان می‌دهد.

Report Page