چگونه یک PowerShell For Loop می تواند یک فرمان را چندین بار اجرا کند

حلقه For یکی از با ارزش ترین ابزارها در هر زبان برنامه نویسی است(valuable tools in any programming language) و  Microsoft PowerShell نیز تفاوتی با آن ندارد. شما می توانید از حلقه های دیگر برای تکرار دستورات استفاده کنید، اما حلقه For شاید ساده ترین باشد.

از تکرار روی آرایه ها تا انجام یک تابع در تعداد دفعات از پیش تعیین شده، چیزهای زیادی وجود دارد که می توانید با این ابزار به دست آورید. در اینجا یک آموزش در مورد نحوه استفاده از حلقه های For در PowerShell آورده(PowerShell) شده است.

کاربرد (Use)حلقه(Loops) های For در پاورشل(PowerShell) چیست ؟

برخلاف Command Prompt ، PowerShell یک محیط اسکریپت نویسی کامل است. این بدان معناست که می‌توانید اسکریپت‌های PowerShell(PowerShell scripts) قابل استفاده مجدد بنویسید تا به‌جای وارد کردن دستی دستورات، وظایف را به‌طور خودکار انجام دهید. و حلقه های For کلید نوشتن این ماژول ها هستند.

دستور For یک بلوک اسکریپت را چندین بار تکرار می‌کند و یک متغیر معین را برای پیگیری پیشرفت تغییر می‌دهد. این به شما امکان می دهد از حلقه برای برخی سناریوهای نسبتاً جالب استفاده کنید.

شما می توانید دنباله ای از اعداد را ایجاد کنید، یک عدد اول را تعیین کنید، یا یک تایمر شمارش معکوس نمایش دهید. به طور عملی تر، می توانید روی آرایه ای از اشیاء تکرار کنید و با هر ورودی مقداری عمل انجام دهید.

نحو (Syntax)یک(PowerShell) حلقه For در PowerShell(Loop)

حلقه‌ها در Windows PowerShell به همان روشی که در هر زبان برنامه‌نویسی انجام می‌دهند کار می‌کنند. عباراتی که متغیر ردیابی را مقداردهی می‌کنند، مقدار آن را آزمایش می‌کنند و متغیر را اصلاح می‌کنند، در براکت‌های زیر «For» که با نقطه‌ی ویرگول از هم جدا شده‌اند، نوشته می‌شوند. سپس لیست دستورات خود با پرانتزهای فرفری محدود شده است.

برای ( مقداردهی اولیه(Initialization) ؛ شرط(Condition) ؛ به روز رسانی(Update) )

{

    بلوک اسکریپت(Script Block)

}

نحوه استفاده از حلقه(Loop) For در اسکریپت PowerShell(PowerShell Script)

استفاده از حلقه For بسیار ساده است. هر زمان که با موقعیتی مواجه شدید که نیاز به تکرار یک مرحله کمی متفاوت دارد، باید آن را در یک حلقه For قرار دهید.

فرض کنید باید یک قطعه کد بنویسید که بتواند مجموع تمام اعداد طبیعی را تا یک عدد n که در متغیر $n موجود است پیدا کند. در اینجا یک مثال اولیه برای حلقه For آمده است:

$n = 10

$ مجموع = 0

برای ($i = 1 ; $i -le $n ; $i++)

{

    $sum = $sum + $i

}

"مجموع $n عدد طبیعی $sum است"

دسترسی به آرایه ها از طریق یک حلقه For

تولید دنباله های عددی به سختی چیزی است که بیشتر مردم از PowerShell برای آن استفاده می کنند. یک کاربرد رایج تر، تکرار روی یک آرایه است.

فرض(Say) کنید یک آرایه $week با هفت عنصر دارید. همانطور که در مثال زیر نشان داده شده است، می توانید لیست روزهای موجود در آرایه را با استفاده از یک حلقه For ساده خروجی بگیرید.

برای ($i = 0 ; $i -lt $week.Length ; $i++)

{

    $week[$i]

}

استفاده از حلقه ForEach(ForEach Loop) برای تکرار سریع(Quickly Iterate) از طریق یک آرایه

شکل دیگری از حلقه For عبارت ForEach است. این نسخه مرور محتویات یک آرایه PowerShell و پردازش آنها را به صورت جداگانه ساده می کند. به عنوان مثال، قطعه کد قبلی را می توان به صورت زیر بازنویسی کرد:

Foreach ($day در $week)

{

    $ روز

}

هنگامی که با اشیاء پیچیده‌تر سروکار دارید، می‌توانید از cmdlet Foreach-Object نیز برای انجام یک عمل بر روی محتویات هر فرمان PowerShell استفاده کنید.(PowerShell)

حلقه(Loop Different) For چه تفاوتی با سایر انواع (Types)حلقه(Loops) ها دارد ؟

حلقه For تنها نوع دستور حلقه در دسترس شما نیست. مانند بسیاری از زبان های برنامه نویسی، PowerShell دارای چندین نوع حلقه است.

در حالی که

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

در حالی که ( شرط(Condition) )

{

    بلوک اسکریپت(Script Block)

}

انجام در حالی که

اگر در حال نوشتن یک اسکریپت هستید که باید حداقل یک بار اجرا شود - حتی اگر عبارت اشتباه ارزیابی شود - می توانید از حلقه Do- While استفاده کنید. (Do-While)تنها تفاوت با حلقه while این است که بلوک فرمان را قبل از شرط قرار می دهد، به این معنی که کد قبل از اینکه عبارت تست برای اولین بار بررسی شود، اجرا می شود.

انجام دادن {

    بلوک اسکریپت(Script block)

}

در حالی که ( شرط(Condition) )

انجام - تا

نسخه دیگری از این حلقه Do-Until است. اساسا(Basically) ، بلوک کد را اجرا می کند و سپس آن را تکرار می کند تا عبارت تست درست باشد - معکوس یک حلقه Do-(Do-While) Wile. ساختار چندان مفیدی نیست، زیرا می‌توانید با تغییر شرط در یک حلقه Do-While استاندارد به همان چیزی برسید .

انجام دادن {

    بلوک اسکریپت(Script Block)

}

تا ( شرط(Condition) )

چرا حلقه For بهتر است

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

همانطور که ممکن است انتظار داشته باشید، برنامه نویسان اغلب این مرحله را فراموش می کنند که منجر به اسکریپتی می شود که آنطور که در نظر گرفته شده است کار نمی کند. این باعث اتلاف وقت گرانبها در رفع اشکال می شود.

حلقه For از این مسئله با نیاز به عبارات اولیه و افزایش در براکت های شروع جلوگیری می کند. این منجر به اسکریپت های تمیزتر و قوی تر می شود.

چه زمانی باید از حلقه(Loop) For در PowerShell استفاده کنید ؟

PowerShell همه چیز در مورد ایجاد اسکریپت برای اتوماسیون است. و احتمالا مفیدترین ابزار برای دستیابی به این حلقه For است. می توانید از آن برای جایگزینی بسیاری از عملیات کپی-پیست با یک اسکریپت فشرده تر و زیباتر استفاده کنید.

رایج ترین عملکرد این حلقه تکرار روی یک آرایه، یک ورودی در یک زمان است. برای یک اسکریپت ساده تر، می توانید از حلقه ForEach نیز استفاده کنید. همچنین می توانید از حلقه For برای تولید دنباله های عددی استفاده کنید، اگرچه به ندرت به آن نیاز است.

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



About the author

من یک توسعه دهنده وب با تجربه در Firefox و Google Docs هستم. من مدرک مدیریت بازرگانی از دانشگاه فلوریدا دارم. مهارت های من عبارتند از: توسعه وب سایت، سیستم مدیریت محتوا (CMS)، تجزیه و تحلیل داده ها، و طراحی رابط کاربری. من یک مشاور باتجربه هستم که می‌توانم به تیم شما در ساخت وب‌سایت‌ها و اپلیکیشن‌های مؤثر کمک کنم.



Related posts