ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
25 visibility
موضوع: ویندوز توسط:
شما می توانید پارامترها را به دو روش مختلف به یک اسکریپت PowerShell ارسال کنید. (اگر در مورد PowerShell اطلاعاتی ندارید، لطفاً به نکته "مقدمه ای به PowerShell" مراجعه کنید.) پارامترها را می توان بر اساس موقعیت یا نام منتقل کرد. هر دو به یک اندازه معتبر هستند، بنابراین بیایید نحوه انجام هر کدام را بررسی کنیم.
من یک اسکریپت PowerShell به نام LookForFiles.ps1 دارم. به دنبال فایل‌هایی در یک دایرکتوری معین می‌گردد و فایل‌هایی را نمایش می‌دهد که اندازه آنها بیش از 20K است. در حال حاضر فیلمنامه من به این صورت است:
$files = Get-ChildItem C:Temp foreach ($file in $files) { if ($file.length -gt 20000) { Write-Output $file } }
همانطور که می بینید، نام دایرکتوری من (C:Temp) و اندازه ای که باید بررسی شود (20000) هر دو دارای کد سخت هستند. در عوض، می‌خواهم نام و اندازه فهرست را وارد کنم تا اسکریپت من انعطاف‌پذیرتر شود.
ابتدا چیزها را طوری تغییر می‌دهم که این پارامترها را بر اساس موقعیت پاس می‌کنم، یعنی پارامتر اول دایرکتوری و پارامتر دوم اندازه باشد. اسکریپت جدید من به این شکل است:
$files = Get-ChildItem args[0] foreach ($file in $files) { if ($file.length -gt args[1]) { Write-Output $file } }
اکنون اسکریپت خود را فراخوانی می کنم و خروجی را مشاهده می کنم: (شکل 1 را ببینید.)
image
شکل 1. عبور پارامترهای موقعیتی.
توجه داشته باشید که وقتی اسکریپت را فراخوانی می کنم، دو پارامتر را ارسال می کنم، یعنی "C:Temp" و "20000". اینها به ترتیب در "$args[0]" و "$args[1]" پر می شوند تا اسکریپت دقیقاً مانند قبل اجرا شود. حالا بیایید اسکریپت را طوری تغییر دهیم که انتظار پارامترهای نامگذاری شده را داشته باشد:
param([string] $dir = "C:Temp", [int32] $size = 20000) $files = Get-ChildItem $dir foreach ($file in $files) { if ($file.length -gt $size) { Write-Output $file } }
توجه داشته باشید که من ارجاع به متغیرهای "$args" را حذف کردم. همچنین توجه داشته باشید که خط اول (امتداد به خط دوم) یک عبارت "param" است. این به PowerShell می گوید که انتظار پارامترهای نامگذاری شده را داشته باشد. این عبارت "param" باید اولین خط در اسکریپت شما باشد. دو متغیر را تعریف می کند و آنها را به مقادیر پیش فرض مقداردهی اولیه می کند. متغیر رشته $dir را تعریف می کند و آن را به طور پیش فرض "C:Temp" و متغیر int32 (عددی) $size را تعریف می کند و آن را به صورت پیش فرض 20000 می کند. اسکریپت فراخوانی می شود، همچنان اجرا می شود و از آن مقادیر استفاده می کند.
به جای جایی که قبلاً $args[0] داشتم، اکنون متغیر $dir و به جای جایی که قبلاً $args[1] داشتم، اکنون متغیر $size را دارم. بیایید اسکریپت را فراخوانی کنیم و این پارامترهای نامگذاری شده را مشخص کنیم: (شکل 2 را ببینید.)
image
شکل 2. عبور پارامترهای نامگذاری شده.
اکنون هنگامی که اسکریپت فراخوانی می شود، "-dir" و سپس دایرکتوری مورد علاقه خود را مشخص می کنم، و "-size" را برای نشان دادن اندازه مورد علاقه من مشخص می کنم. از آنجایی که این پارامترها نامگذاری شده اند، می توانم ترتیب آنها را تغییر دهم. که ابتدا "-size" و در مرحله دوم "-dir" مشخص شده است. یا می توانم آنها را به طور کامل حذف کنم و از مقادیر داخل اسکریپت استفاده شود.
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 23 visibility
ارسال شده در 25 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 146 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 136 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 106 visibility

23.7k سوال

9.0k پاسخ

614 دیدگاه

11.2k کاربر

235 نفر آنلاین
0 عضو و 235 مهمان در سایت حاضرند
بازدید امروز: 12977
بازدید دیروز: 17853
بازدید کل: 20325161
...