پاورشل برای برنامهنویسان
@programming_tipsدرسنامه: اجرای برنامهها از طریق PowerShell
در این درسنامه یاد میگیریم چگونه از PowerShell برای اجرای برنامههای مختلف ویندوز، فایلهای اجرایی (.exe)، اسکریپتها و حتی فایلهای متنی یا URLها استفاده کنیم. اجرای برنامهها از طریق PowerShell یکی از کاربردیترین مهارتهایی است که هر برنامهنویس باید بلد باشد، چون با آن میتوان کارهای روزمره را خودکار کرد، ابزارهای جانبی را فراخوانی کرد یا پروژههای مختلف را از خط فرمان اجرا نمود.
اجرای برنامهها در PowerShell
پاور شبل میتواند تقریباً هر برنامهای را که در ویندوز نصب شده اجرا کند. برای این کار کافی است نام فایل اجرایی آن را بنویسی. مثلاً برای باز کردن Notepad:
notepad
این دستور برنامهی Notepad را باز میکند، درست مثل اینکه در منوی Start روی آن کلیک کرده باشی.
اگر برنامه در مسیرهای شناختهشدهی سیستم (PATH) نباشد، باید مسیر کامل آن را بنویسی. مثلاً:
& "C:\Program Files\Google\Chrome\Application\chrome.exe"
در اینجا از نماد & (که در PowerShell به آن call operator میگویند) استفاده شده تا فایل اجرایی اجرا شود.
اجرای فایلهای با پسوند خاص
پاورشل بر اساس پسوند فایل، تشخیص میدهد چگونه آن را باز کند:
.exe→ به صورت برنامه اجرایی.ps1→ به صورت اسکریپت PowerShell.batیا.cmd→ به صورت فایل Batch.txt,.csv,.htmlو ... → با برنامهی پیشفرض سیستم
برای مثال:
notepad.exe C:\Users\Ali\Documents\notes.txt
یا برای اجرای یک فایل Batch:
.\backup.bat
توجه کن که برای فایلهای محلی باید از .\ در ابتدای نام فایل استفاده کنی تا PowerShell بداند فایل در مسیر جاری است.
اجرای اسکریپتهای PowerShell
برای اجرای یک اسکریپت PowerShell (مثلاً script.ps1)، کافی است مسیر آن را بدهی:
.\script.ps1
اما ممکن است با خطای "running scripts is disabled on this system" مواجه شوی.
این خطا به خاطر Execution Policy است. برای رفع آن (در محیط امن آموزشی)، میتوانی سیاست اجرا را موقتاً تغییر دهی:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
بعد از اجرای این دستور، میتوانی اسکریپت را بدون خطا اجرا کنی.
ارسال آرگومان به برنامهها
اغلب برنامهها پارامترهایی دارند که میتوانی هنگام اجرا به آنها بدهی.
برای مثال، اجرای Notepad با باز کردن فایل خاص:
notepad.exe "C:\log.txt"
یا باز کردن Chrome با یک وبسایت مشخص:
& "C:\Program Files\Google\Chrome\Application\chrome.exe" "https://openai.com"
حتی میتوانی چند آرگومان پشت سر هم بدهی:
python app.py --debug --port 8000
در این حالت PowerShell python را اجرا کرده و بقیهی آرگومانها را به آن منتقل میکند.
اجرای برنامهها در پسزمینه
گاهی نمیخواهی اجرای یک برنامه، PowerShell را متوقف کند.
برای این کار از Start-Process استفاده میشود:
Start-Process notepad.exe
با این دستور Notepad باز میشود ولی PowerShell بلافاصله کنترل را به تو برمیگرداند.
میتوانی پارامترهای مختلفی هم به آن بدهی، مثل مسیر فایل، آرگومانها یا تنظیمات اجرای مخفی:
Start-Process "chrome.exe" -ArgumentList "https://google.com"
اگر میخواهی برنامه بدون پنجره باز شود:
Start-Process "notepad.exe" -WindowStyle Hidden
و برای اجرای برنامه با دسترسی Administrator:
Start-Process powershell.exe -Verb RunAs
اجرای برنامه و انتظار برای اتمام آن
اگر بخواهی PowerShell منتظر بماند تا برنامه تمام شود، از پارامتر -Wait استفاده کن:
Start-Process notepad.exe -Wait Write-Host "Notepad closed. Continuing script..."
اینجا PowerShell بعد از بستن Notepad ادامهی دستور بعدی را اجرا میکند.
اجرای فایلها یا URLها با Invoke-Item
اگر بخواهی فایل یا لینک را با برنامه پیشفرض سیستم باز کنی، از Invoke-Item استفاده کن:
Invoke-Item "C:\Users\Ali\Pictures\photo.jpg" Invoke-Item "https://github.com"
این دستور فایل را با برنامهی پیشفرض باز میکند — مثلاً عکس با Photos و لینک با مرورگر.
اجرای خروجی یک دستور دیگر
PowerShell به لطف pipeline (|) میتواند خروجی یک دستور را به ورودی برنامهای دیگر بدهد.
مثلاً میخواهی لیست فایلها را در Notepad باز کنی:
Get-ChildItem | Out-File files.txt notepad files.txt
در اینجا خروجی اول به فایل نوشته شده و سپس برنامهی Notepad آن را باز کرده است.
نکات مهم
- همیشه اگر مسیر شامل فاصله است، آن را داخل
"بنویس. - اگر برنامه در مسیر PATH نیست، باید مسیر کاملش را بنویسی.
- برای اجرای فایلهای PowerShell (
.ps1)، حواست به Execution Policy باشد. - با
Start-Processمیتوانی اجرای همزمان، بدون پنجره، یا با دسترسی ادمین انجام دهی.
جمعبندی
در این درس یاد گرفتی که PowerShell چطور میتواند مانند یک لانچر قدرتمند عمل کند:
- با
&یا نام مستقیم برنامهها را اجرا میکنی - با
Start-Processاجرای کنترلشده و پسزمینهای داری - با
Invoke-Itemفایلها و لینکها را باز میکنی - و با ترکیب دستورات، میتوانی اجرای برنامهها را به بخشی از اسکریپت خودکار تبدیل کنی
این مهارت در خودکارسازی فرایندهای توسعه، تست، یا مدیریت سیستم بسیار کاربردی است و تقریباً در تمام اسکریپتهای پیشرفته PowerShell استفاده میشود.