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

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

@programming_tips

درسنامه: اجرای PowerShell و تنظیم محیط (Execution Policy، پروفایل‌ها)

وقتی PowerShell رو باز می‌کنیم، فقط وارد یک محیط خط فرمان نمی‌شیم، بلکه وارد یک محیط اسکریپت‌نویسی و اتوماسیون قدرتمند می‌شویم. برای استفاده بهینه و امن از PowerShell، باید دو چیز اصلی رو بدونیم: Execution Policy و پروفایل‌ها (Profiles).


۱. اجرای PowerShell

برنامه PowerShell رو می‌شه به چند روش باز کرد:

  1. از طریق منوی Start: کافی است “PowerShell” رو جستجو کنید و نسخه‌ی موردنظر (مثلاً Windows PowerShell یا PowerShell 7) رو باز کنید.
  2. از Run: با کلیدهای Win + R و تایپ powershell یا pwsh (برای PowerShell 7) می‌تونیم محیط رو باز کنیم.
  3. از ترمینال ویندوز یا VS Code: می‌تونیم PowerShell رو به عنوان Terminal پیش‌فرض انتخاب کنیم.

وقتی PowerShell اجرا می‌شه، می‌بینیم که یک Prompt ظاهر می‌شه که معمولاً به شکل $> یا PS C:\> است. این همون جاییه که دستورات رو تایپ می‌کنیم و اجرا می‌کنیم.


۲. Execution Policy

الف) مفهوم Execution Policy

برنامه PowerShell برای امنیت کاربران، یک سیاست اجرایی (Execution Policy) داره که مشخص می‌کنه چه اسکریپت‌هایی اجازه اجرا دارند و چه اسکریپت‌هایی بلاک می‌شن. این موضوع اهمیت زیادی داره، چون PowerShell می‌تونه اسکریپت‌ها رو با دسترسی کامل به سیستم اجرا کنه و اجرای یک اسکریپت ناشناس می‌تونه خطرناک باشه.

ب) انواع Execution Policy

۱. Restricted – پیش‌فرض در Windows PowerShell: هیچ اسکریپتی اجرا نمی‌شه، فقط دستورات تعاملی مجاز هستند.

۲. AllSigned – فقط اسکریپت‌هایی که با یک امضای معتبر دیجیتال هستند اجرا می‌شن.

3. RemoteSigned – اسکریپت‌های دانلود شده از اینترنت باید امضا داشته باشن، اسکریپت‌های محلی بدون امضا هم اجرا می‌شن.

4. Unrestricted – همه اسکریپت‌ها اجرا می‌شن، حتی بدون امضا.

5. Bypass – هیچ محدودیتی وجود نداره.

ج) چطور Execution Policy رو چک و تغییر بدیم

برای مشاهده وضعیت فعلی، از دستور زیر استفاده می‌کنیم:

Get-ExecutionPolicy

برای تغییر سطح اجرای اسکریپت‌ها (مثلاً به RemoteSigned):

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  • -Scope CurrentUser یعنی فقط روی حساب کاربری فعلی اعمال می‌شه و نیازی به دسترسی ادمین نیست.
  • اگر بخوای روی کل سیستم اعمال کنی، از -Scope LocalMachine استفاده می‌کنیم و نیاز به اجرا به عنوان Administrator داریم.

⚠️ نکته امنیتی: همیشه سطح اجرای PowerShell رو حداقل لازم قرار بدید و از Unrestricted یا Bypass فقط در محیط توسعه استفاده کنید.


۳. پروفایل‌ها (Profiles)

الف) مفهوم پروفایل

برنامه PowerShell این امکان رو داره که هر بار که محیط اجرا می‌شه، یک فایل تنظیمات شخصی بارگذاری کنه. این فایل بهش می‌گیم پروفایل.

پروفایل به ما اجازه می‌ده:

  • که Cmdletها یا ماژول‌های موردعلاقه رو بارگذاری کنیم.
  • متغیرها و توابع شخصی بسازیم.
  • ظاهر محیط (Prompt) رو سفارشی کنیم.

ب) مسیر و ایجاد پروفایل

برای دیدن مسیر پروفایل فعلی، دستور زیر رو اجرا می‌کنیم:

$PROFILE

این مسیر معمولاً چیزی شبیه C:\Users\Username\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 هست.

اگر فایل وجود نداشته باشه، می‌تونیم ایجادش کنیم:

if (!(Test-Path -Path $PROFILE)) {
    New-Item -ItemType File -Path $PROFILE -Force
}

حالا می‌تونیم هر دستوری که می‌خوایم به صورت خودکار هنگام شروع PowerShell اجرا بشه، داخل این فایل قرار بدیم.

مثال: فرض کنید می‌خوایم هر بار PowerShell اجرا می‌شه، یک پیام خوش‌آمدگویی نمایش داده بشه و یک ماژول خاص بارگذاری بشه:

Write-Host "Welcome Ali! Ready to code in PowerShell." -ForegroundColor Cyan
Import-Module Pester

۴. نکات مهم برای برنامه‌نویس‌ها

  1. همیشه Execution Policy مناسب رو تنظیم کنید تا هم امنیت داشته باشید و هم بتونید اسکریپت‌های خودتون رو اجرا کنید.
  2. پروفایل‌ها بهترین جا برای اتوماسیون محیط توسعه هستند. مثلا می‌تونید متغیرهای مسیر پروژه، توابع کمکی یا Aliasهای شخصی بسازید.
  3. در محیط کاری و سرورهای شرکت، سیاست‌های سازمانی ممکنه محدودیت‌های اضافی داشته باشه؛ پس قبل از تغییر Execution Policy، قوانین امنیتی رو بررسی کنید.

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

برنامه PowerShell رو می‌شه به روش‌های مختلف اجرا کرد و اولین چیزی که هر کاربر باید بدونه، Execution Policy هست که مشخص می‌کنه چه اسکریپت‌هایی اجازه اجرا دارند. علاوه بر این، پروفایل‌ها امکان شخصی‌سازی محیط و اجرای اتوماتیک دستورات رو فراهم می‌کنن. برای برنامه‌نویس‌ها، استفاده از پروفایل‌ها و تنظیمات مناسب Execution Policy باعث می‌شه محیط کار سریع‌تر، امن‌تر و اتوماتیک‌تر بشه.

Report Page