ترفندها و نکات پیشرفته PowerShell: تکنیک‌های حرفه‌ای

PowerShell مجموعه‌ای از قابلیت‌های کوتاه، کاربردی و بسیار قدرتمند دارد که متخصصان برای نوشتن اسکریپت‌های تمیز، سریع و قابل نگهداری از آن‌ها استفاده می‌کنند. این تکنیک‌های حرفه‌ای—مثل Splatting، مقادیر پیش‌فرض پارامترها، زیرعبارت‌ها، پرانتزهای اجرایی و قالب‌بندی پیشرفته—نتیجه کار را تغییر نمی‌دهند، اما سرعت و کیفیت کار را به‌طور چشمگیری افزایش می‌دهند. این مقاله مجموعه‌ای از بهترین ترفندهای PowerShell را معرفی می‌کند که اتوماسیون را ساده‌تر و مؤثرتر می‌سازند.

PowerShell Splatting$PSDefaultParameterValuesSubexpressionsParenthetical ExecutionFormat Enumeration LimitPSCustomObjectExternal Utilities

~2 دقیقه مطالعه • بروزرسانی ۳۰ آذر ۱۴۰۴

1. Splatting: بسته‌بندی پارامترها


Splatting روشی است برای ارسال پارامترها به‌صورت یک هش‌تیبل با استفاده از @. این روش برای دستورات تکراری یا پارامترهای زیاد بسیار مناسب است.

$params = @{
    Class        = 'Win32_LogicalDisk'
    ComputerName = 'SERVER2'
    Filter       = "DriveType=3"
    Credential   = $cred
}

Get-WmiObject @params

می‌توان Splatting را با پارامترهای دستی ترکیب کرد. این روش خوانایی اسکریپت را افزایش می‌دهد و از تکرار جلوگیری می‌کند.


2. مقادیر پیش‌فرض پارامترها ($PSDefaultParameterValues)


از نسخه 3 به بعد، PowerShell اجازه می‌دهد برای پارامترهای خاص، مقدار پیش‌فرض تعیین کنید—در جلسه فعلی یا به‌صورت دائمی در پروفایل.

$PSDefaultParameterValues = @{
    "Get-WmiObject:Class" = "Win32_OperatingSystem"
    "Format-Wide:Column"  = 4
}

$PSDefaultParameterValues.Add("Get-ChildItem:Force", $true)

این مقادیر هر زمان قابل بازنویسی هستند. برای حذف یک مقدار، از Remove() استفاده کنید.


3. زیرعبارت‌ها در رشته‌ها: $($expression)


زیرعبارت‌ها اجازه می‌دهند داخل رشته‌های دابل‌کوت، عبارت‌های محاسباتی یا ویژگی‌های اشیاء را قرار دهید.

Write-Host "Free space: $(100 - ($free/$total*100))%"
Write-Host "Service: $($service.Name)"

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


4. پرانتزها به‌عنوان اشیاء


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

نوشته و پژوهش شده توسط دکتر شاهین صیامی