تسلط بر خط لوله PowerShell: اشیاء، اتصال پارامترها و رفع اشکال

خط لوله در PowerShell قلب واقعی این شل است و آن را از شل‌های متنی سنتی مانند Cmd.exe یا Bash متمایز می‌کند. در حالی که شل‌های قدیمی متن ساده را منتقل می‌کنند، PowerShell اشیاء غنی و ساختاریافته را در خط لوله عبور می‌دهد. این رویکرد شیء‌گرا امکان اجرای دستورات پیچیده در قالب یک خط ساده را فراهم می‌کند. درک نحوه اتصال پارامترها (ByValue و ByPropertyName)، استفاده از سوئیچ -PassThru و رفع اشکال خط لوله برای استفاده مؤثر از PowerShell ضروری است

اتصال پارامترهاByValue و ByPropertyNamePassThruPowerShell Pipeline

~2 دقیقه مطالعه • بروزرسانی ۳۰ آذر ۱۴۰۴

1. شل‌های سنتی در برابر خط لوله PowerShell


در شل‌های قدیمی مانند Cmd.exe و Bash، داده‌ها به‌صورت متن ساده بین StdOut و StdIn منتقل می‌شوند. این روش نیازمند پردازش متنی سنگین است. در PowerShell، خروجی دستورات اشیاء هستند که از طریق خط لوله به دستورات بعدی منتقل می‌شوند. این رویکرد مشکلات پردازش متن را حذف می‌کند.


2. اتصال پارامترها در خط لوله


  • ByValue: اگر نوع شیء خروجی دقیقاً با پارامتر ورودی مطابقت داشته باشد، مستقیماً متصل می‌شود. مثال: Get-Service | Stop-Service.
  • ByPropertyName: اگر ByValue مطابقت نداشته باشد، PowerShell نام ویژگی‌های شیء را با نام پارامترها تطبیق می‌دهد. مثال: Import-CSV users.csv | New-ADUser.

این دو روش به ترتیب امتحان می‌شوند: ابتدا ByValue و سپس ByPropertyName.


3. سوئیچ -PassThru


دستورات عملیاتی مانند New-، Set- یا Stop- معمولاً خروجی تولید نمی‌کنند. استفاده از -PassThru باعث می‌شود شیء تغییر یافته به خط لوله منتقل شود و بتوان آن را در دستورات بعدی استفاده کرد. مثال: New-ADUser ... -PassThru | Enable-Mailbox.


4. رفع اشکال خط لوله


  • استفاده از Help <Cmdlet> -Full برای بررسی اینکه آیا پارامتر ورودی خط لوله را می‌پذیرد.
  • استفاده از Trace-Command -Name ParameterBinding برای ردیابی اتصال پارامترها.
  • راهکارهای جایگزین: دستورات پرانتزی یا ForEach-Object.

5. دستورات خارجی در خط لوله


خروجی دستورات خارجی مانند ipconfig به رشته تبدیل می‌شود. اشیاء منتقل‌شده به دستورات خارجی نیز به متن تبدیل می‌شوند که اغلب ساختار داده را از بین می‌برد. این روش با ابزارهایی مانند More.com خوب کار می‌کند اما در موارد دیگر محدودیت دارد.


نتیجه‌گیری


خط لوله PowerShell با عبور اشیاء ساختاریافته به‌جای متن ساده، امکان مدیریت قدرتمند و انعطاف‌پذیر سیستم‌ها را فراهم می‌کند. تسلط بر اتصال پارامترها، استفاده از -PassThru و رفع اشکال خط لوله، مدیران را قادر می‌سازد تا وظایف پیچیده را به‌سادگی و با کارایی بالا انجام دهند.


نوشته و پژوهش شده توسط دکتر شاهین صیامی