Future ForgeFuture ForgeFuture ForgeFuture Forge
ServicesWorkPackagesFree toolsNotesAboutContact
Start
  1. Home
  2. /Notes
Future ForgeFuture Forge

Product engineering studio — design, build, and deploy software.

Discuss your project

Contact

hello@futureforge.ir09128464105
Future ForgeFuture Forge

Product engineering studio — design, build, and deploy software.

Services

Product engineeringFull-stack engineeringEngineering auditArchitecture consultingInfrastructure and deploymentAI in the product

Explore

WorkNotesFAQPackages

Free tools

Engineering auditArchitecture advisorProject estimatorPrompt tool

Company

AboutContactPrivacyTerms of use

Discuss your project

Describe the problem and the constraints. If there is a fit, we will schedule a conversation.

Discuss your project

Contact

hello@futureforge.ir09128464105
GitHubLinkedIn

© 2026 FutureForge. All rights reserved.

HomeServicesFree toolsStart
Operations

۲۰ فرمان ضروری PowerShell برای توسعه‌دهنده

بیست cmdlet و الگوی ضروری PowerShell برای فایل، فرایند، شبکه، سرویس، env و عیب‌یابی روزانه توسعه‌دهنده — با مثال قابل‌اجرا.

SE
Soheil Ebrahimpour

Founder & product engineer

·Sep 20, 2026·10 min read
فرمان‌های PowerShellGet-HelpGet-ChildItemGet-ProcessGet-ServiceGet-NetTCPConnectionGet-Content
استیکی Get-ChildItem و Select-Object کنار پرامپت PS

حفظ صدها cmdlet بی‌فایده است. آنچه سرعت روزانه می‌دهد مجموعه‌ای کوچک از فرمان‌هاست که فایل، فرایند، سرویس، شبکه و محیط را پوشش می‌دهد. این مقاله بیست مورد را با مثال واقعی می‌آورد؛ هرکدام را در Windows Terminal روی ماشین خودتان اجرا کنید تا مدل شیء زیر انگشتتان بنشیند.

قبل از لیست: Get-Help و Get-Command را عادت کنید. مستند همراه، بهتر از کپی کور از وب است.

powershell

Get-Help Get-Process -Examples Get-Command *Process*

Get-Help Get-Command Where-Object Select-Object

پاسخ کوتاه

برای کار روزمرهٔ توسعه‌دهنده روی ویندوز، این بیست الگو بیشترین بازگشت را دارند: کشف فرمان، کار با فایل و محتوا، فرایند و پورت، سرویس، متغیر محیطی، شبکهٔ پایه، و خروجی ساخت‌یافته. به‌جای معادل‌سازی اجباری با bash، یاد بگیرید روی شیء Select و Where بزنید.

۱) Get-Help — خواندن راهنما

powershell

Get-Help Get-ChildItem -Full Get-Help Get-ChildItem -Examples Update-Help -ErrorAction SilentlyContinue

بدون این عادت، هر فرمان بعدی حفظی می‌ماند. اگر کمک آنلاین کامل نیست، Update-Help را با دسترسی مناسب امتحان کنید.

۲) Get-Command — پیدا کردن خود فرمان

powershell

Get-Command Get-ChildItem Get-Command *item* Get-Command -Verb Get -Noun *Service*

وقتی نمی‌دانید اسم دقیق چیست، با الگوی Verb-Noun جستجو کنید.

۳) Get-ChildItem — فهرست فایل و پوشه

powershell

Get-ChildItem Get-ChildItem -Recurse -Filter *.ts Get-ChildItem Env:

معادل عملی dir/ls با فیلتر قوی. Providerها مثل Env: نشان می‌دهند همه‌چیز «درایو» نیست.

۴) Set-Location — تغییر پوشه

powershell

Set-Location C:\projects\api Get-Location # Alias رایج: cd

ساده است؛ در اسکریپت به‌جای فرض پوشهٔ جاری، صریح باشید.

۵) Get-Content و Set-Content — خواندن و نوشتن متن

powershell

Get-Content .\appsettings.json -Raw Get-Content .\log.txt -Tail 50 -Wait 'Sample' | Set-Content .\note.txt -Encoding utf8

برای لاگ زنده Tail و Wait مفید است. Encoding را در فایل‌های فارسی جدی بگیرید.

۶) Select-String — جستجو در متن

powershell

Select-String -Path .\*.log -Pattern 'ERROR' Get-ChildItem -Recurse -Filter *.cs | Select-String 'TODO'

نزدیک به grep برای جریان کار ویندوزی؛ روی شیء فایل هم پایپ می‌شود.

۷) Copy-Item، Move-Item، Remove-Item

powershell

Copy-Item .\config.example.json .\config.json Move-Item .\old.txt .\archive\ Remove-Item .\tmp\* -Recurse -WhatIf

قبل از حذف مخرب، WhatIf را عادت کنید. Recurse را بی‌گارد استفاده نکنید.

۸) New-Item — ساخت فایل یا پوشه

powershell

New-Item -ItemType Directory -Path .\artifacts -Force New-Item -ItemType File -Path .\artifacts\.keep -Force

۹) Get-Process — دیدن فرایندها

powershell

Get-Process Get-Process -Name node -ErrorAction SilentlyContinue Get-Process | Sort-Object CPU -Descending | Select-Object -First 8

جزئیات بیشتر در مقالهٔ مدیریت فرایند.

۱۰) Stop-Process — پایان‌دادن به فرایند

powershell

Stop-Process -Name notepad -ErrorAction SilentlyContinue Stop-Process -Id 12345 -Force

Force معادل خشن‌تری است؛ اول بدون آن و با تشخیص PID درست تلاش کنید. سرویس‌ها را ترجیحاً با Stop-Service مدیریت کنید.

۱۱) Get-Service و Start/Stop/Restart-Service

powershell

Get-Service -Name w3svc -ErrorAction SilentlyContinue Get-Service | Where-Object Status -eq 'Running' | Select-Object -First 10 # Restart-Service -Name 'MyApp' # با مجوز و تشخیص نام درست

۱۲) Get-NetTCPConnection — پورت و اتصال

powershell

Get-NetTCPConnection -LocalPort 3000 -ErrorAction SilentlyContinue | Select-Object LocalAddress,LocalPort,State,OwningProcess Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess

جایگزین ساخت‌یافته برای بخش زیادی از netstat روزمره.

۱۳) Test-NetConnection — تست شبکه

powershell

Test-NetConnection www.microsoft.com -Port 443 Test-NetConnection localhost -Port 5432

برای تشخیص سریع «پورت گوش می‌دهد یا نه» و مسیر شبکه مفید است.

۱۴) Invoke-WebRequest / Invoke-RestMethod

powershell

Invoke-RestMethod https://api.github.com/zen (Invoke-WebRequest https://example.com).StatusCode

برای API، RestMethod مستقیم شیء JSON می‌سازد. اگر باینری curl.exe می‌خواهید، صریح صدا بزنید.

۱۵) Get-ChildItem Env: و $Env: — متغیر محیطی

powershell

Get-ChildItem Env: | Sort-Object Name $Env:PATH -split ';' | Select-Object -First 10 $Env:NODE_ENV = 'development'

مقدار $Env در نشست جاری است؛ پایدار کردن سطح User/Machine داستان جداست.

۱۶) [System.Environment]::GetEnvironmentVariable

powershell

[System.Environment]::GetEnvironmentVariable('PATH','User') [System.Environment]::GetEnvironmentVariable('PATH','Machine')

برای دیدن تفاوت User و Machine ضروری است؛ فقط نگاه کردن به $Env:PATH کافی نیست.

۱۷) Select-Object و Where-Object — شکل‌دهی خروجی

powershell

Get-Process | Where-Object { $_.WorkingSet64 -gt 100MB } | Select-Object Name, Id, @{n='WS_MB';e={[math]::Round($_.WorkingSet64/1MB,1)}}

این دو cmdlet قلب پایپ‌لاین روزمرهٔ شما هستند.

۱۸) ConvertTo-Json و ConvertFrom-Json

powershell

Get-Process -Name explorer | Select-Object Name,Id | ConvertTo-Json '{"a":1}' | ConvertFrom-Json | Select-Object -ExpandProperty a

برای لاگ ساخت‌یافته و حرف زدن با APIهای داخلی تیم حیاتی است.

۱۹) Get-WinEvent — خواندن لاگ رویداد

powershell

Get-WinEvent -LogName Application -MaxEvents 5 Get-WinEvent -FilterHashtable @{LogName='System'; Level=2; StartTime=(Get-Date).AddHours(-6)} -MaxEvents 10

۲۰) Export-Csv و Out-File — ذخیرهٔ خروجی

powershell

Get-Service | Select-Object Name,Status,StartType | Export-Csv .\services.csv -NoTypeInformation -Encoding utf8 Get-ChildItem | Out-File .\listing.txt -Encoding utf8

برای اشتراک با تیم غیرتوسعه‌دهنده CSV طلاست. Encoding را صریح بگذارید.

چطور تمرین کنید تا در حافظه بماند؟

  1. یک روز فقط با PowerShell فایل پروژه را جابه‌جا و جستجو کنید.
  2. یک پورت توسعه را پیدا و فرایندش را با نام بشناسید.
  3. وضعیت یک سرویس محلی دیتابیس را با Get-Service بخوانید.
  4. PATH سطح User و Machine را چاپ و مقایسه کنید.
  5. ۵ خطای آخر Application را با Get-WinEvent بکشید.

جدول میانبر ذهنی

هدففرمان
کمکGet-Help / Get-Command
فایلGet-ChildItem / Get-Content / Select-String
فرایندGet-Process / Stop-Process
پورتGet-NetTCPConnection
سرویسGet-Service / Restart-Service
محیط$Env: / System.Environment
لاگGet-WinEvent
خروجیSelect-Object / ConvertTo-Json / Export-Csv

اشتباه‌های رایج

  • استفاده از curl بدون Get-Command و تعجب از رفتار Alias.
  • حذف Recurse بدون WhatIf.
  • Stop-Process روی فرایند سرویس به‌جای Stop-Service.
  • فرض اینکه تغییر $Env:PATH دائمی است.
  • کپی اسکریپت bash و انتظار اجرای بدون تغییر.

سوالات متداول

باید هر ۲۰ تا را حفظ کنم؟

الگو را حفظ کنید؛ جزئیات پارامتر را با Get-Help به خاطر بیاورید.

روی PowerShell ۵.۱ هم کار می‌کنند؟

بیشترشان بله. بعضی مثل رفتار ماژول شبکه یا جزئیات Get-WinEvent را در نسخهٔ خودتان با Help چک کنید.

معادل ls و grep چیست؟

اغلب Get-ChildItem و Select-String؛ ولی مدل شیء را در اولویت بگذارید نه فقط اسم.

اگر راه‌حل شما تغییر سطح Machine بود، بگویید چرا User کافی نبود. اگر Force کردید، بگویید چرا توقف ملایم شکست. این انضباط کوچک کیفیت عملیاتی تیم را بالا می‌برد.

قبل از اینکه مشکل را بسته‌شده اعلام کنید: نشست جدید را تست کنید، مسیر یا پورت یا سرویس را دوباره با ابزار ساخت‌یافته تأیید کنید، و یک خط در یادداشت تیمی بنویسید که علت ریشه‌ای چه بود. بدون این سه قدم، همان تیکت هفتهٔ بعد برمی‌گردد.

چک‌لیست پایانی قبل از بستن تیکت

WhatIf و Confirm روی فرمان‌های مخرب را جدی بگیرید. Remove-Item -Recurse بدون فیلتر دقیق یکی از رایج‌ترین حوادث محلی است.

Invoke-WebRequest و RestMethod به همان اندازه که راحت‌اند می‌توانند راز را در تاریخچه یا لاگ بنویسند. توکن را در خط فرمان خام نگذارید. فایل‌های csv خروجی را اگر شامل مسیر سرویس یا حساب هستند در جای امن نگه دارید.

امنیت کوچک ولی مهم

وقتی اسکریپت می‌نویسید، نام‌های Verb-Noun را رعایت کنید تا همکار PowerShell‌دان سریع بخواند. از Alias در اسکریپت‌های ماندگار پرهیز کنید؛ Alias برای تعاملی خوب است، برای ریپو مبهم.

پیدا کردن فایل اخیراً تغییرکرده، کشتن فرایند مشخص، تست پورت محلی، خواندن پنج خطای آخر، و چاپ PATH سطح User را هر روز یک‌بار در هفته اول تمرین کنید تا حافظهٔ عضلانی بسازد. فهرست بیست‌تایی بالا برای همین طراحی شده نه برای مطالعهٔ منفعل.

ترکیب‌های روزمره که ارزش تمرین دارند

پایپ‌لاین را با Select-Object در پایان عادت کنید تا خروجی شلوغ نشود. برای اشتراک با همکار غیرتوسعه‌دهنده Export-Csv را ترجیح دهید. برای لاگ ماشین‌خوان ConvertTo-Json مناسب‌تر است.

برای هر cmdlet سه چیز را در خاطر بسپارید: چه ورودی می‌گیرد، چه شیئی برمی‌گرداند، و خطرناک است یا نه. Get-Help -Examples را روی همان ماشین بخوانید چون نسخه و ماژول ممکن است پارامتر را عوض کرده باشد. وقتی چیزی را پیدا نمی‌کنید، Get-Command با وایلدکارد سریع‌تر از جست‌وجوی وب است.

الگوی یادگیری به‌جای حفظ پارامتر

نسخه‌بندی اسکریپت‌های عیب‌یابی را جدی بگیرید. یک gist شخصی یا پوشه در ریپو داخلی با تاریخ و پیش‌فرض‌های ایمن، بهتر از حافظهٔ شفاهی است.

مستند رسمی را نخواندن و اعتماد به اولین نتیجهٔ جستجو، اجرای همیشگی Elevated، و تغییر Machine برای مشکل User، سه الگوی پرهزینه‌اند. هزینهٔ واقعی‌شان معمولاً ساعت‌ها بعد معلوم می‌شود؛ وقتی محیط برای همکار یا CI می‌شکند.

اشتباه‌های سطح بالاتر

در پایان تمرین، همه چیز را به حالت اول برگردانید: فرایند تست را ببندید، متغیر موقت را رها کنید، و سرویس را اگر تغییر دادید به Startup Type قبلی برگردانید. پاک‌سازی بخشی از حرفه‌ای‌گری است.

یک سرور محلی بالا بیاورید، پورتش را پیدا کنید، فرایند را بشناسید، یک متغیر محیطی موقت ست کنید، PATH را فقط مشاهده کنید بدون تغییر مخرب، وضعیت یک سرویس بی‌خطر را بخوانید، و پنج رویداد اخیر Application را ببینید. این مدار بسته، دانش را از حالت خواندنی به حالت عضلانی می‌برد.

تمرین پیشنهادی سی‌دقیقه‌ای

اگر از لینوکس آمده‌اید، معادل ذهنی بسازید ولی فرمان را عیناً ترجمه نکنید. مدل سرویس ویندوز با systemd شباهت مفهومی دارد و تفاوت ابزاری. مدل env با export شباهت دارد و تفاوت سطح Machine و User.

مفاهیم این مقاله را با Terminal، PowerShell، فرایند، پورت، env، PATH، سرویس و Event Viewer به‌صورت حلقه ببینید نه جزایر جدا. بیشتر تیکت‌های واقعی دو یا سه حلقه از این زنجیره را درگیر می‌کنند.

ارتباط با بقیهٔ سری ویندوز

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

هر بار که راه‌حل موقتی پیدا می‌کنید، همان را به یک فرمان قابل‌کپی در یادداشت شخصی تبدیل کنید. هفتهٔ بعد همان فرمان را از حافظه نمی‌نویسید؛ از دفترک می‌آورید و خطا کمتر می‌شود.

در کار واقعی، مشکل‌ها ترکیبی‌اند: پورت اشغال، PATH کهنه، سرویس متوقف، و ترمینال با پروفایل غلط همزمان ظاهر می‌شوند. به‌جای تغییر همزمان همه چیز، یک متغیر را ثابت نگه دارید و فقط یک فرض را آزمایش کنید. این نظم علمی سرعت عیب‌یابی را بیشتر از هر میانبر افزایش می‌دهد.

عمق عملی بیشتر برای کار روزانه

خلاصه

بیست فرمان بالا پوشش عملی فایل، فرایند، پورت، سرویس، env، شبکه، لاگ و خروجی ساخت‌یافته را می‌دهند. با Get-Help شروع کنید، روی شیء Where/Select بزنید، و برای کارهای مخرب WhatIf را فراموش نکنید. مرحلهٔ بعد: مدیریت فرایند را عمیق‌تر ببینید.

منابع و مراجع

  • Microsoft Learn — Get-Help — https://learn.microsoft.com/powershell/module/microsoft.powershell.core/get-help
  • Microsoft Learn — Get-Process — https://learn.microsoft.com/powershell/module/microsoft.powershell.management/get-process
  • Microsoft Learn — Get-Service — https://learn.microsoft.com/powershell/module/microsoft.powershell.management/get-service
  • Microsoft Learn — Get-NetTCPConnection — https://learn.microsoft.com/powershell/module/nettcpip/get-nettcpconnection
  • Microsoft Learn — Get-WinEvent — https://learn.microsoft.com/powershell/module/microsoft.powershell.diagnostics/get-winevent
  • Microsoft Learn — about_Environment_Variables — https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_environment_variables

Author

SE

Soheil Ebrahimpour is the founder of FutureForge. He works on product design, architecture, and getting custom software into production.

Related notes

Related notes

Categories

Related services

From note to project

If this topic is close to your product or system, we can talk about the real scope.

If you are unsure about architecture or the build path, we can talk about the project.

Describe the problem and the constraints. If there is a fit, we will schedule a conversation.

Soheil Ebrahimpour
Notes
Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه
تعیین اندازهٔ سرور: RAM، CPU و Storage بر اساس Workload
Docker در برابر Kubernetes؛ مقایسهٔ دقیق نه شعار
چرا همیشه به Kubernetes نیاز ندارید؟
Kubernetes چیست؟ اجرای مقاوم workloadهای کانتینری

Operations

Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه

Sep 20, 2026

Operations

تعیین اندازهٔ سرور: RAM، CPU و Storage بر اساس Workload

Sep 20, 2026

Operations

Docker در برابر Kubernetes؛ مقایسهٔ دقیق نه شعار

Sep 20, 2026

Operations

چرا همیشه به Kubernetes نیاز ندارید؟

Sep 20, 2026

Operations

Kubernetes چیست؟ اجرای مقاوم workloadهای کانتینری

Sep 20, 2026
All notes219
Software architecture13
Glossary37
Operations87
Product engineering74
Web guide8
Product engineering
Full-stack engineering
Engineering audit
Architecture consulting
Infrastructure and deployment
Discuss your project
Free tools
Discuss your project