قسمت پنجم : Pipeline در PowerShell؟

0 50

خب دوستان امیدوارم تا به اینجا، مقالات برای شما مفید بوده باشد. در این مقاله من سعی کردم یک توضیح خیلی کامل و کاربردی درمورد Pipeline و Get-Member و نحوه کارکرد هرکدام بدهم. این مقاله برای کسانی که نیاز به پاورشل برای انجام امور و تغییرات بر روی گروهی از Object ها و یا انجام تسک در مقیاس بالا بسیار کاربردی می باشد.

 

Pipeline چیست؟

ما از Pipeline در پاورشل و حتی دیگر زبان های اسکریپت نویسی استفاده می کنیم. کاربرد Pipeline به این شکل است که، هر خروجی که قرار است به شما نمایش دهد را منتقل به کامند بعدی می کند و از آنجایی که در پاورشل اطلاعات بصورت Object هستند، خیلی راحت می توان بر روی آن ها عملیات های مختلف انجام داد.

Pipeline با خط عمودی نمایش داده می شود که در بیشتر کیبورد ها معمولا بالای کلید Enter قرار دارد. به مثال زیر دقت کنید :

در مثال زیر ما می خواهیم سرویس WinRM را فعال کنیم :

مثال زیر شاید زیاد کاربردی نباشد ولی برای درک Pipeline به آن دقت کنید :

یا حتی می توانیم فرمت خروجی که به ما نمایش داده می شود را تغییر دهیم با استفاده از Pipeline و دستوراتی که برای این کار به ما کمک می کنند، مانند :

دوستان ما در مقاله ششم بصورت کامل درمورد مباحث Format کردن و یا راه های شخصی سازی خروجی صحبت می کنیم.

یا به مثال زیر هم توجه کنید :

درمورد خروجی گرفتن هم در مقاله ششم کامل توضیح داده می شود.

 

Get-Member چیست؟

با استفاده از Get-Member یا Alias آن gm، ما می توانیم تمام Property، Method و خیلی موارد کاربردی دیگر را که از دستور قبل Pipe می شوند را ببینیم. مانند :

توضیح اصطلاحات :

Property :

به هر ستون از اطلاعاتی که به ما نمایش داده میشود Property گفته می شود.

Method :

یک Action یا عملیاتی بر روی این Object ها انجام میدهند.

 

برای درک بهتر Method و Property به مثال های زیر توجه کنید :

در این مثال تمام خروجی Get-Date داخل متغیر date$ قرار داده شده است ولی فقط Property که مربوط به روز هفته هست را خروجی میگیریم :

یا از Method ها برای انجام کار های متفاوت کمک میگیریم :

به یک مثال دیگر هم توجه کنید که با استفاده از متود می توانیم به روز و یا ساعت این متغیر نیز اضافه کنیم :

نکته مهم : با استفاده از Tab هم شما می توانید Method ها و Property های مورد نظر خود را پیدا کنید و سپس خروجی بگیرید.

 

آشنایی با نحوه Pipe کردن Value پارمترها

در ابتدا کار، شما باید از اینکه پارمتر مورد نظر در کامند مربوطه می تواند مقدار یا Value از طریق Pipeline قبول کند را مطمئن شوید. برای این کار شما باید help از دستور مورد نظر را بصورت Full بگیرید و سپس به پارمتر مورد نظر خود را چک کنید. به مثال زیر توجه کنید :

Help Test-Connection -Full

و یا مثال زیر :

Help Get-LocalUser -Full

 

اما ByValue, ByPropertyName چیست؟

ByValue :

پاورشل برای قبول کردن مقادیری که از Pipeline به سمت پارامتر می آید، ۲ روش برای قبول کردن مقادیر دارد. روشی که پاورشل آن را بصورت پیش فرض به عنوان روش اول امتحان می کند، ByValue است. در این روش تنها چیزی که نیاز است، مقدار آن پارامتر است. برای مثال برای گرفتن لیست یوزر های لوکال یک سیستم شما میتوانید یک فایل .txt بصورت زیر تهیه کنید :

بعد در ادامه ما چند راه برای معرفی این مقدار به پارمتر داریم که در ادامه مشاهده می کنید:

 

راه اول : استفاده از Pipeline

راه دوم : استفاده از پرانتز

مانند معادلات ریاضی وقتی ما دستوراتی را درون پرانتز قرار می دهیم، یعنی به پاورشل این را می گوییم که ابتدا آن بخشی که در پرانتز است را اجرا کند سپس ادامه دستورات را اجرا کند. پس همانطور که در مثال زیر می بینید ابتدا محتوای فایل Users.txt گرفته می شود و بعد از آن ادامه دستور اجرا می شود :

راه سوم : از طریق متغیر

 

ByPropertyName :

این روش را پاورشل در قدم دوم بعد از اینکه از طریق ByValue  به نتیجه نرسید انجام میدهد. در این روش ما باید از فایل هایی که Comma Seprated هستند استفاده کنیم، که من در مثال های زیر از پسوند .CSV استفاده می کنم.

راه اول : استفاده از Custom Property و Hash Table

این راه برای زمانی است که ما فقط یک مقدار برای پارامترها در نظر میگیریم. این راه برای چندین مقدار در یک پارامتر مورد استفاده قرار نمی گیرد. به مثال زیر که نحوه انجام آن است دقت کنید :

در این روش همانطور که می بینید ما نمی توانیم چند مقدار را در پارامتر قرار دهیم. برای مثال نمی توانیم چند Name و چند FullName داشته باشیم، بلکه پارامتر ها از طریق این روش تنها یک مقدار خواهند داشت.

 

راه دوم : استفاده از فایل .CSV

نکته ای که در استفاده از این روش باید در نظر بگیریم، جدا کردن هر Parameter و Value آن با کاراکتر comma است که به این شکل  “  ,  “ نشان داده می شود. به مثال های زیر توجه کنید :

با استفاده از فایل بالا می توانیم ۳ یوزر البته بدون Password بسازیم.

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

 

خب دوستان بازهم به پایان یکی از سری مقالات پاورشل رسیدیم، بحث مربوط به Pipeline یکی از مهم ترین مباحث در پاورشل است به این دلیل که ما در اکثر مواقع نیاز به نوشتن اسکریپت نداریم و فقط می خواهیم یک خط کامند را اجرا کنیم و سریع تر به نتیجه برسیم که استفاده از Pipeline مهم ترین ابزار برای رسیدن به این هدف است.

منتظر مقالات بعدی باشید :)) …

 

منابع :

– کتاب Learn Windows PowerShell in a Month

– کتاب PowerShellNotesForProfessionals

– Administration and Automation with Windows PowerShell از UDEMY

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.