پاور شیل کی ' خودکار متغیرات سسٹم مینجمنٹ، آٹومیشن، اور اسکرپٹنگ سرگرمیوں کے لیے ضروری ہیں۔ یہ متغیرات PowerShell رن ٹائم کے ذریعہ بلٹ ان ہوتے ہیں اور اسکرپٹ یا کمانڈ کے نفاذ کے دوران مخصوص معلومات کو ذخیرہ کرنے اور حوالہ دینے کے لیے پلیس ہولڈرز کے طور پر کام کرتے ہیں۔ ان خودکار متغیرات کو مؤثر طریقے سے سمجھنا اور استعمال کرنا PowerShell اسکرپٹس کی کارکردگی اور فعالیت کو بہت زیادہ بڑھا سکتا ہے۔
اس مضمون کا مقصد PowerShell میں 'خودکار متغیرات' کے تصور، ان کی اہمیت، اور مختلف منظرناموں میں ان سے کیسے فائدہ اٹھایا جا سکتا ہے۔
PowerShell میں آٹومیٹک ویری ایبلز کیا ہیں؟
شروع کرنے کے لیے، آئیے 'کی تعریف پر غور کریں خودکار متغیرات ' یہ متغیرات پہلے سے طے شدہ ہیں اور اسکرپٹ پر عمل درآمد کے دوران PowerShell کے ذریعہ خود بخود بنائے جاتے ہیں۔ یہ مختلف مقاصد کو پورا کرتے ہیں، بشمول سسٹم کے بارے میں معلومات فراہم کرنا، کمانڈ لائن دلائل، اسکرپٹ سے متعلق تفصیلات، اور بہت کچھ۔
پاور شیل کئی 'خودکار متغیرات' پیش کرتا ہے اور ان میں سے ہر ایک اسکرپٹ پر عمل درآمد میں ایک الگ مقصد فراہم کرتا ہے۔ یہ متغیرات درج ذیل ہیں:
1. $PSVersionTable
PowerShell میں بنیادی خودکار متغیرات میں سے ایک ہے ' $PSVersionTable ' یہ متغیر اسکرپٹ ڈویلپرز کو پاور شیل کے استعمال ہونے والے ورژن کا پتہ لگانے کی اجازت دیتا ہے، جو کچھ خصوصیات اور افعال کی مطابقت اور دستیابی پر غور کرتے وقت اہم ہو سکتا ہے۔
مندرجہ ذیل خصوصیات اس متغیر کے ساتھ منسلک ہیں:
پی ایس ورژن: پاور شیل ورژن نمبر لوٹاتا ہے۔
PSE ایڈیشن: PowerShell 4 اور اس سے پہلے کے لیے، نیز پاور شیل 5.1 مکمل خصوصیات والے ونڈوز ورژنز کے لیے، اس پراپرٹی کی قدر 'ڈیسک ٹاپ' ہے۔ اس خصوصیت میں پاور شیل 6 اور اس کے بعد کے لیے کور کی قدر ہے، نیز ونڈوز نینو سرور یا ونڈوز IoT جیسے کم فٹ پرنٹ ایڈیشنز کے لیے Windows PowerShell 5.1۔
GitCommitId: سورس فائلوں کی GitHub کمٹ آئی ڈی بازیافت کرتا ہے۔
تم: کمپیوٹر سسٹم کے بارے میں معلومات کو لاگ کرتا ہے جسے پاور شیل استعمال کر رہا ہے۔
پلیٹ فارم: آپریٹنگ سسٹم کا معاون پلیٹ فارم لوٹاتا ہے۔ لینکس اور میک او ایس پر یونکس کی قدر ہے۔ $IsMacOs اور $IsLinux چیک کریں۔
PSC مطابقت پذیر ورژن: پاور شیل ورژن جو موجودہ ورژن کے ساتھ مطابقت رکھتے ہیں واپس کر دیے جاتے ہیں۔
PSRemotingProtocolVersion: PowerShell ریموٹ مینجمنٹ پروٹوکول کا ورژن نمبر لوٹاتا ہے۔
سیریلائزیشن ورژن: سیریلائزیشن کے طریقہ کار کا ورژن لوٹاتا ہے۔
WSManStackVersion: WS-Management stack کا ورژن نمبر لوٹاتا ہے۔
$ پی ایس ورژن ٹیبل
2. $Args
PowerShell میں ایک اور ضروری خودکار متغیر ہے ' $Args ”، جس میں اسکرپٹ یا فنکشن کو بھیجے گئے کمانڈ لائن آرگیومنٹس کی ایک صف ہوتی ہے۔ یہ متغیر ڈویلپرز کو ان کے اسکرپٹس کے اندر متحرک طور پر فراہم کردہ دلائل پر کارروائی اور ہیرا پھیری کرنے کا اختیار دیتا ہے۔
کسی فنکشن کی وضاحت کرتے وقت، آپ پیرامیٹرز کا اعلان کرنے کے لیے یا تو 'param' کلیدی لفظ استعمال کر سکتے ہیں یا آپ فنکشن کے نام کے بعد قوسین میں پیرامیٹرز کی کوما سے الگ کردہ فہرست شامل کر سکتے ہیں۔ ایونٹ ایکشن کا '$Args' متغیر ایسی اشیاء کو اسٹور کرتا ہے جو ہینڈل کیے جانے والے ایونٹ کے ایونٹ کے پیرامیٹرز کے لیے پلیس ہولڈرز کے طور پر کام کرتے ہیں:
ہر ایک کے لئے ( $arg میں $Args ) {تحریری میزبان $arg
}
3. $MyInvocation
' $MyInvocation متغیر اسکرپٹ یا طریقہ کار کے بارے میں اہم پس منظر کا ڈیٹا دیتا ہے جو اس وقت چل رہا ہے۔ یہ خصوصیات پیش کرتا ہے جیسے اسکرپٹ کا نام، اسکرپٹ لائن نمبر، اور آیا اسکرپٹ کو انٹرایکٹو چلایا جا رہا ہے یا غیر انٹرایکٹو۔ یہ خصوصیات اسکرپٹ ڈویلپرز کو برانچنگ منطق کو نافذ کرنے، غلطی سے نمٹنے کے طریقہ کار کی وضاحت کرنے، یا بامعنی لاگنگ اور رپورٹنگ بنانے میں مدد کرتی ہیں:
$ مائی انوکیشن
4. $Error
ایک غیر معروف خودکار متغیر ' $Error ”، کسی بھی خامی پیغامات یا استثناء کو مؤثر طریقے سے پکڑتا ہے جو اسکرپٹ پر عمل درآمد کے دوران ہوتا ہے۔ '$Error' تک مخصوص خامی کی تفصیلات حاصل کرنے کے لیے رسائی حاصل کی جا سکتی ہے جیسے استثنائی پیغامات، اسٹیک ٹریسز، یا ایرر کوڈز، تفصیلی تجزیہ اور ڈیبگنگ کو فعال کرتے ہوئے۔
سب سے حالیہ خرابی کی نمائندگی صف میں پہلی ایرر آبجیکٹ سے ہوتی ہے۔ $Error[0] ' آپ غلطیوں کو '$Error' صف میں شامل ہونے سے روکنے کے لیے 'نظرانداز کریں' کی قدر کے ساتھ ErrorAction کامن آپشن استعمال کر سکتے ہیں۔
فرض کریں کہ ہم نے ایک درست کمانڈ ٹائپ کیا ہے:
آئی پی [ onfig
اب، اگر ہم '$Error' cmdlet درج کرتے ہیں:
$ خرابی
5. $PSCmdlet
پاور شیل ماڈیولز کے ساتھ کام کرتے وقت، خودکار متغیر ' $PSCmdlet 'عمل میں آتا ہے۔ یہ متغیر cmdlet یا فنکشن کی درخواست کی موجودہ مثال تک رسائی فراہم کرتا ہے، اس کی خصوصیات اور طریقوں کے ساتھ براہ راست تعامل کی سہولت فراہم کرتا ہے۔
'$PSCmdlet' کا استعمال کرتے ہوئے، اعلی درجے کی اسکرپٹ ڈویلپرز بلٹ ان فنکشنلٹیز کو بڑھا یا تبدیل کرکے ماڈیولز کے رویے کو ٹھیک اور بہتر بنا سکتے ہیں۔ آپ استعمال کے معیار کے جواب میں اپنے cmdlet یا فنکشن کوڈ میں آبجیکٹ کی خصوصیات اور طریقے استعمال کر سکتے ہیں:
فنکشن typeof-psCmdlet {[ cmdlet بائنڈنگ ( ) ] پرم ( )
بازگشت '' کی قسم $psCmdlet ہے $($psCmdlet.GetType() .پورا نام)'
}
typeof-psCmdlet
متذکرہ بالا متغیرات کے علاوہ، PowerShell میں خودکار متغیرات شامل ہیں جیسے $HOME، $PROFILE، $PWD، اور بہت کچھ، جو مختلف مقاصد کو پورا کرتا ہے، جیسے کہ ان پٹ تک رسائی، غلطیوں سے باخبر رہنا، ماحول کی معلومات کی بازیافت، پیرامیٹرز کا انتظام، اور بہت کچھ۔ یہ متغیرات ذیل میں درج ہیں:
خودکار متغیرات | تفصیل |
$$ | پاور شیل سیشن کو موصول ہونے والی پچھلی لائن میں آخری ٹوکن رکھتا ہے۔ |
$؟ | آخری کمانڈ کے عمل درآمد کی حیثیت کو اسٹور کرتا ہے۔ |
$^ | سیشن کو موصول ہونے والی آخری لائن کا پہلا ٹوکن شامل ہے۔ |
$_ | پائپ لائن میں موجودہ آبجیکٹ کی نمائندگی کرتا ہے۔ |
$ConsoleFileName | سیشن میں حال ہی میں استعمال ہونے والی کنسول فائل (.psc1) کے راستے پر مشتمل ہے۔ |
$EnabledExperimentalFeatures | فعال تجرباتی خصوصیات کی فہرست پر مشتمل ہے۔ |
$ایونٹ | ایک 'PSEventArgs' آبجیکٹ پر مشتمل ہے جو پروسیس ہونے والے ایونٹ کی نمائندگی کرتا ہے۔ |
$EventArgs | کارروائی کی جا رہی ایونٹ کے پہلے ایونٹ کی دلیل پر مشتمل ہے۔ |
$EventSubscriber | پروسیس ہونے والے ایونٹ کے ایونٹ کے سبسکرائبر کی نمائندگی کرتا ہے۔ |
$ExecutionContext | PowerShell ہوسٹ کے عملدرآمد کے سیاق و سباق کی نمائندگی کرتا ہے۔ |
$false | بولین ویلیو 'فالس' کی نمائندگی کرتا ہے۔ |
$foreach | 'ہر ایک کے لیے' لوپ کا شمار کنندہ پر مشتمل ہے۔ |
$HOME | صارف کی ہوم ڈائرکٹری کے مکمل راستے پر مشتمل ہے۔ |
$Host | پاور شیل کے لیے موجودہ میزبان ایپلیکیشن کی نمائندگی کرتا ہے۔ |
$input | فنکشن یا اسکرپٹ کو بھیجے گئے تمام ان پٹ کے لیے ایک شمار کنندہ کے طور پر کام کرتا ہے۔ |
$IsCoreCLR | یہ بتاتا ہے کہ آیا سیشن .NET کور رن ٹائم (CoreCLR) پر چل رہا ہے۔ |
$IsLinux | اشارہ کرتا ہے کہ آیا سیشن لینکس آپریٹنگ سسٹم پر چل رہا ہے۔ |
$IsMacOS | اشارہ کرتا ہے کہ آیا سیشن MacOS آپریٹنگ سسٹم پر چل رہا ہے۔ |
$IsWindows | اس بات کی نشاندہی کرتا ہے کہ آیا سیشن ونڈوز آپریٹنگ سسٹم پر چل رہا ہے۔ |
$LASTEXITCODE | آخری مقامی پروگرام یا پاور شیل اسکرپٹ کے ایگزٹ کوڈ کو اسٹور کرتا ہے۔ |
$Matches | '-match' اور '-notmatch' آپریٹرز کے مماثل سٹرنگز پر مشتمل ہے۔ |
$NestedPromptLevel | نیسٹڈ کمانڈز یا ڈیبگنگ منظرناموں میں موجودہ پرامپٹ لیول کو ٹریک کرتا ہے۔ |
$null | ایک کالعدم یا خالی قدر کی نمائندگی کرتا ہے۔ |
$PID | پاور شیل سیشن کا پروسیس شناخت کنندہ (PID) پر مشتمل ہے۔ |
$PROFILE | موجودہ صارف اور میزبان ایپلیکیشن کے لیے PowerShell پروفائل کا مکمل راستہ شامل ہے۔ |
$PSBoundParameters | اسکرپٹ یا فنکشن اور ان کی اقدار کو پاس کیے گئے پیرامیٹرز کی لغت رکھتا ہے۔ |
$PSCommandPath | اسکرپٹ کے مکمل راستے اور فائل نام پر مشتمل ہے۔ |
$PSCulture | موجودہ پاور شیل رن اسپیس کی ثقافت کی عکاسی کرتا ہے۔ |
$PSEdition | پاور شیل ایڈیشن کی معلومات پر مشتمل ہے۔ |
$PSHOME | پاور شیل انسٹالیشن ڈائرکٹری کے مکمل راستے پر مشتمل ہے۔ |
$PSitem | $_ کی طرح، پائپ لائن میں موجودہ آبجیکٹ کی نمائندگی کرتا ہے۔ |
$PSScriptRoot | عمل کرنے والی اسکرپٹ کی پیرنٹ ڈائرکٹری کے مکمل راستے پر مشتمل ہے۔ |
$PSSenderInfo | پی ایس سیشن شروع کرنے والے صارف کے بارے میں معلومات پر مشتمل ہے۔ |
$PSUICulture | آپریٹنگ سسٹم میں کنفیگر کردہ یوزر انٹرفیس (UI) کلچر کی عکاسی کرتا ہے۔ |
$PWD | پاور شیل سیشن کی موجودہ ورکنگ ڈائرکٹری کی نمائندگی کرتا ہے۔ |
$Sender | اس آبجیکٹ پر مشتمل ہے جس نے ایک ایونٹ تیار کیا۔ |
$ShellId | موجودہ شیل کے شناخت کنندہ پر مشتمل ہے۔ |
$StackTrace | تازہ ترین خرابی کے لیے اسٹیک ٹریس کو اسٹور کرتا ہے۔ |
$switch | 'سوئچ' بیان کے شمار کنندہ پر مشتمل ہے۔ |
$یہ | اسکرپٹ بلاکس میں کلاس کی مثال سے مراد ہے جو کلاسوں میں توسیع کرتی ہے۔ |
$سچ | بولین قدر 'True' کی نمائندگی کرتا ہے۔ |
PowerShell میں تمام 'خودکار متغیرات' درج ذیل کمانڈ کو چلا کر تلاش کیے جا سکتے ہیں:
گیٹ ویری ایبل
نتیجہ
' خودکار متغیرات پاور شیل اسکرپٹنگ کی ریڑھ کی ہڈی کی حیثیت رکھتی ہے، جس سے ڈویلپرز کو سسٹم، کمانڈ لائن آرگومینٹس، اسکرپٹ پر عمل درآمد کے سیاق و سباق اور مزید کے بارے میں معلومات حاصل کرنے کی اجازت ملتی ہے۔ '$PSVersionTable'، '$Args'، '$MyInvocation'، '$Error'، اور دیگر جیسے خودکار متغیرات کا استعمال کرتے ہوئے، PowerShell اسکرپٹ کے ڈویلپرز منظم نظام کے انتظامی طریقوں کو تشکیل دے سکتے ہیں۔