ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

پاور شیل انٹرپریٹر ونڈو میں کمانڈز کا ٹیکسٹ آؤٹ پٹ معلومات کو انسانی ادراک کے لیے موزوں شکل میں ظاہر کرنے کا صرف ایک طریقہ ہے۔ دراصل بدھ پر مبنی اشیاء کے ساتھ کام کرنے کے لیے: cmdlets اور فنکشنز انہیں بطور ان پٹ وصول کرتے ہیں اور باہر نکلنے پر واپس آیا، اور متغیر کی قسمیں انٹرایکٹو اور اسکرپٹ میں دستیاب ہیں .NET کلاسز پر مبنی ہیں۔ سیریز کے چوتھے مضمون میں، ہم اشیاء کے ساتھ کام کرنے کا مزید تفصیل سے مطالعہ کریں گے۔

فہرست کا خانہ:

پاور شیل میں آبجیکٹ
اشیاء کی ساخت کو دیکھنا
اشیاء کو فلٹر کرنا
اشیاء کو چھانٹنا
اشیاء اور ان کے حصوں کا انتخاب
ہر آبجیکٹ، گروپ آبجیکٹ اور پیمائش آبجیکٹ کے لیے
.NET اور COM آبجیکٹ (نیا آبجیکٹ) بنانا
جامد طریقوں کو کال کرنا
PSCustomObject ٹائپ کریں۔
اپنی اپنی کلاسز بنانا

پاور شیل میں آبجیکٹ

آئیے یاد رکھیں کہ ایک آبجیکٹ ڈیٹا فیلڈز (پراپرٹیز، ایونٹس وغیرہ) اور ان پر کارروائی کے طریقوں (طریقوں) کا مجموعہ ہے۔ اس کا ڈھانچہ ایک قسم کے ذریعہ بیان کیا جاتا ہے، جو عام طور پر متحد .NET کور پلیٹ فارم میں استعمال ہونے والی کلاسوں پر مبنی ہوتا ہے۔ COM، CIM (WMI) اور ADSI اشیاء کے ساتھ کام کرنا بھی ممکن ہے۔ ڈیٹا پر مختلف کارروائیوں کو انجام دینے کے لیے پراپرٹیز اور طریقوں کی ضرورت ہوتی ہے؛ اس کے علاوہ، پاور شیل میں، آبجیکٹ کو فنکشنز اور cmdlets کو دلیل کے طور پر منتقل کیا جا سکتا ہے، ان کی قدروں کو متغیرات کو تفویض کیا جا سکتا ہے، اور اس کے علاوہ کمانڈ کمپوزیشن میکانزم (کنویئر یا پائپ لائن)۔ پائپ لائن میں ہر کمانڈ اپنے آؤٹ پٹ کو اگلے ایک کو، آبجیکٹ بہ آبجیکٹ منتقل کرتی ہے۔ پروسیسنگ کے لیے، آپ مرتب کردہ cmdlets استعمال کر سکتے ہیں یا اپنا بنا سکتے ہیں۔ اعلی درجے کی خصوصیاتپائپ لائن میں موجود اشیاء کے ساتھ مختلف ہیرا پھیری کرنے کے لیے: فلٹرنگ، چھانٹنا، گروپ بندی، اور یہاں تک کہ ان کی ساخت کو تبدیل کرنا۔ اس فارم میں ڈیٹا منتقل کرنے کا ایک سنگین فائدہ ہے: وصول کرنے والی ٹیم کو بائٹ اسٹریم (ٹیکسٹ) کو پارس کرنے کی ضرورت نہیں ہے، مناسب خصوصیات اور طریقوں کو کال کرکے تمام ضروری معلومات آسانی سے حاصل کی جاتی ہیں۔

اشیاء کی ساخت کو دیکھنا

مثال کے طور پر، آئیے Get-Process cmdlet چلائیں، جو آپ کو سسٹم میں چلنے والے عمل کے بارے میں معلومات حاصل کرنے کی اجازت دیتا ہے:

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

یہ کچھ فارمیٹ شدہ ٹیکسٹ ڈیٹا کو ظاہر کرے گا جو واپس کی گئی اشیاء کی خصوصیات اور ان کے طریقوں کے بارے میں کوئی اندازہ نہیں دیتا ہے۔ آؤٹ پٹ کو ٹھیک کرنے کے لیے، ہمیں اشیاء کی ساخت کو جانچنے کا طریقہ سیکھنا ہوگا، اور Get-Member cmdlet اس میں ہماری مدد کرے گا:

Get-Process | Get-Member

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

یہاں ہم پہلے ہی قسم اور ساخت دیکھ چکے ہیں، اور اضافی پیرامیٹرز کی مدد سے ہم، مثال کے طور پر، صرف ان پٹ میں شامل آبجیکٹ کی خصوصیات کو ظاہر کر سکتے ہیں:

Get-Process | Get-Member -MemberType Property

انتظامیہ کے مسائل کو انٹرایکٹو طریقے سے حل کرنے یا آپ کے اپنے اسکرپٹ لکھنے کے لیے اس علم کی ضرورت ہوگی: مثال کے طور پر، ریسپانڈنگ پراپرٹی کا استعمال کرتے ہوئے ہنگ پروسیس کے بارے میں معلومات حاصل کرنے کے لیے۔

اشیاء کو فلٹر کرنا

پاور شیل ایسی اشیاء کو اجازت دیتا ہے جو ایک خاص شرط کو پورا کرتی ہیں پائپ لائن سے گزرنے کی:

Where-Object { блок сценария }

قوسین کے اندر اسکرپٹ بلاک پر عمل کرنے کا نتیجہ بولین ویلیو ہونا چاہیے۔ اگر یہ سچ ہے ($true)، تو وہ آبجیکٹ جو Where-Object cmdlet میں ان پٹ ہے پائپ لائن کے ساتھ گزر جائے گا، بصورت دیگر ($false) اسے حذف کر دیا جائے گا۔ مثال کے طور پر، آئیے رکی ہوئی ونڈوز سرور سروسز کی فہرست دکھائیں، یعنی وہ جن کی اسٹیٹس پراپرٹی "روک گئی" پر سیٹ ہے:

Get-Service | Where-Object {$_.Status -eq "Stopped"}

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

یہاں ایک بار پھر ہم متنی نمائندگی دیکھتے ہیں، لیکن اگر آپ پائپ لائن سے گزرنے والی اشیاء کی قسم اور اندرونی ساخت کو سمجھنا چاہتے ہیں تو یہ مشکل نہیں ہے:

Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

اشیاء کو چھانٹنا

جب اشیاء کی پائپ لائن پروسیسنگ، اکثر ان کو ترتیب دینے کی ضرورت ہوتی ہے۔ Sort-Object cmdlet کو پراپرٹیز کے ناموں (سانٹنگ کیز) کو پاس کیا جاتا ہے اور ان کی اقدار کے مطابق ترتیب دی گئی اشیاء کو لوٹاتا ہے۔ چلنے والے عمل کے آؤٹ پٹ کو CPU وقت (cpu پراپرٹی) کے حساب سے ترتیب دینا آسان ہے:

Get-Process | Sort-Object –Property cpu

Sort-Object cmdlet کو کال کرتے وقت -Property پیرامیٹر کو چھوڑا جا سکتا ہے؛ یہ بطور ڈیفالٹ استعمال ہوتا ہے۔ الٹ چھانٹ کے لیے، -Descending پیرامیٹر استعمال کریں:

Get-Process | Sort-Object cpu -Descending

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

اشیاء اور ان کے حصوں کا انتخاب

Select-Object cmdlet آپ کو پائپ لائن کے شروع یا آخر میں -First یا -Last پیرامیٹرز کا استعمال کرتے ہوئے اشیاء کی ایک مخصوص تعداد کو منتخب کرنے کی اجازت دیتا ہے۔ اس کی مدد سے، آپ واحد اشیاء یا مخصوص خصوصیات کو منتخب کر سکتے ہیں، اور ان کی بنیاد پر نئی اشیاء بھی بنا سکتے ہیں۔ آئیے دیکھتے ہیں کہ سادہ مثالوں کا استعمال کرتے ہوئے cmdlet کیسے کام کرتا ہے۔

درج ذیل کمانڈ زیادہ سے زیادہ RAM (WS پراپرٹی) استعمال کرنے والے 10 عملوں کے بارے میں معلومات دکھاتی ہے۔

Get-Process | Sort-Object WS -Descending | Select-Object -First 10

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

آپ پائپ لائن سے گزرنے والی اشیاء کی صرف مخصوص خصوصیات کو منتخب کر سکتے ہیں اور ان کی بنیاد پر نئی تخلیق کر سکتے ہیں:

Get-Process | Select-Object ProcessName, Id -First 1

پائپ لائن کے آپریشن کے نتیجے میں، ہمیں ایک نئی چیز موصول ہوگی، جس کا ڈھانچہ Get-Process cmdlet کی طرف سے واپس کیے گئے ڈھانچے سے مختلف ہوگا۔ آئیے Get-Member کا استعمال کرکے اس کی تصدیق کریں:

Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

نوٹ کریں کہ سلیکٹ-آبجیکٹ ایک واحد آبجیکٹ (-پہلا 1) لوٹاتا ہے جس میں صرف دو فیلڈز ہیں جن کی ہم نے وضاحت کی ہے: ان کی قدریں Get-Process cmdlet کے ذریعے پائپ لائن میں بھیجی گئی پہلی آبجیکٹ سے کاپی کی گئی تھیں۔ PowerShell اسکرپٹس میں آبجیکٹ بنانے کا ایک طریقہ Select-Object کے استعمال پر مبنی ہے:

$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

سلیکٹ-آبجیکٹ کا استعمال کرتے ہوئے، آپ ان اشیاء میں کمپیوٹڈ پراپرٹیز شامل کر سکتے ہیں جن کی نمائندگی کرنے کی ضرورت ہے۔ ہیش میزیں. اس صورت میں، اس کی پہلی کلید کی قدر پراپرٹی کے نام سے مساوی ہے، اور دوسری کلید کی قیمت موجودہ پائپ لائن عنصر کے لیے جائیداد کی قیمت سے مساوی ہے:

Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

آئیے کنویئر سے گزرنے والی اشیاء کی ساخت کو دیکھتے ہیں:

Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

ہر آبجیکٹ، گروپ آبجیکٹ اور پیمائش آبجیکٹ کے لیے

اشیاء کے ساتھ کام کرنے کے لیے دیگر cmdlets ہیں۔ مثال کے طور پر، آئیے تین سب سے مفید کے بارے میں بات کرتے ہیں:

ہر چیز کے لیے۔ آپ کو پائپ لائن میں موجود ہر شے کے لیے پاور شیل کوڈ چلانے کی اجازت دیتا ہے:

ForEach-Object { блок сценария }

گروپ آبجیکٹ پراپرٹی ویلیو کے لحاظ سے اشیاء کو گروپ کرتا ہے:

Group-Object PropertyName

اگر آپ اسے -NoElement پیرامیٹر کے ساتھ چلاتے ہیں، تو آپ گروپوں میں عناصر کی تعداد معلوم کر سکتے ہیں۔

پیمائش - آبجیکٹ پائپ لائن میں آبجیکٹ فیلڈ ویلیوز کے ذریعہ مختلف سمری پیرامیٹرز کو جمع کرتا ہے (رقم کا حساب لگاتا ہے، اور کم از کم، زیادہ سے زیادہ یا اوسط قدر بھی تلاش کرتا ہے):

Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum

عام طور پر، زیر بحث cmdlets انٹرایکٹو طور پر استعمال ہوتے ہیں، اور اکثر اسکرپٹ میں بنائے جاتے ہیں۔ افعال شروع، عمل اور اختتامی بلاکس کے ساتھ۔

.NET اور COM آبجیکٹ (نیا آبجیکٹ) بنانا

.NET کور اور COM انٹرفیس کے ساتھ سافٹ ویئر کے بہت سے اجزاء ہیں جو سسٹم ایڈمنسٹریٹرز کے لیے مفید ہیں۔ System.Diagnostics.EventLog کلاس کا استعمال کرتے ہوئے، آپ ونڈوز پاور شیل سے براہ راست سسٹم لاگز کا نظم کر سکتے ہیں۔ آئیے -TypeName پیرامیٹر کے ساتھ New-Object cmdlet کا استعمال کرتے ہوئے اس کلاس کی مثال بنانے کی ایک مثال دیکھیں:

New-Object -TypeName System.Diagnostics.EventLog

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

چونکہ ہم نے ایک مخصوص ایونٹ لاگ کی وضاحت نہیں کی ہے، اس لیے کلاس کے نتیجے میں کوئی ڈیٹا نہیں ہے۔ اسے تبدیل کرنے کے لیے، آپ کو -ArgumentList پیرامیٹر کا استعمال کرتے ہوئے اس کی تخلیق کے دوران ایک خاص کنسٹرکٹر طریقہ کو کال کرنا ہوگا۔ اگر ہم ایپلیکیشن لاگ تک رسائی حاصل کرنا چاہتے ہیں، تو ہمیں کنسٹرکٹر کو دلیل کے طور پر "ایپلی کیشن" سٹرنگ پاس کرنا چاہیے:

$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

براہ کرم نوٹ کریں کہ ہم نے کمانڈ کے آؤٹ پٹ کو $AppLog متغیر میں محفوظ کیا ہے۔ اگرچہ پائپ لائنیں عام طور پر انٹرایکٹو موڈ میں استعمال ہوتی ہیں، لیکن اسکرپٹ لکھنے کے لیے اکثر کسی چیز کا حوالہ برقرار رکھنے کی ضرورت ہوتی ہے۔ مزید برآں، بنیادی .NET کور کلاسز سسٹم کے نام کی جگہ میں موجود ہیں: پاور شیل بطور ڈیفالٹ اس میں مخصوص اقسام کو تلاش کرتا ہے، اس لیے System.Diagnostics.EventLog کی بجائے Diagnostics.EventLog لکھنا بالکل درست ہے۔

لاگ کے ساتھ کام کرنے کے لیے، آپ مناسب طریقے استعمال کر سکتے ہیں:

$AppLog | Get-Member -MemberType Method

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

ہم کہتے ہیں کہ اسے Clear() طریقہ سے صاف کیا جاتا ہے اگر رسائی کے حقوق موجود ہیں:

$AppLog.Clear()

New-Object cmdlet بھی COM اجزاء کے ساتھ کام کرنے کے لیے استعمال ہوتا ہے۔ ان میں سے بہت سارے ہیں - ونڈوز اسکرپٹ سرور کے ساتھ فراہم کردہ لائبریریوں سے لے کر ActiveX ایپلی کیشنز، جیسے انٹرنیٹ ایکسپلورر تک۔ COM آبجیکٹ بنانے کے لیے، آپ کو مطلوبہ کلاس کے پروگرامیٹک ProgId کے ساتھ -ComObject پیرامیٹر سیٹ کرنا ہوگا۔

New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject

صوابدیدی ڈھانچے کے ساتھ اپنی اشیاء بنانے کے لیے، New-Object کا استعمال بہت قدیم اور بوجھل لگتا ہے؛ یہ cmdlet PowerShell کے باہر سافٹ ویئر کے اجزاء کے ساتھ کام کرنے کے لیے استعمال ہوتا ہے۔ آئندہ مضامین میں اس مسئلے پر مزید تفصیل سے بات کی جائے گی۔ .NET اور COM اشیاء کے علاوہ، ہم CIM (WMI) اور ADSI اشیاء کو بھی تلاش کریں گے۔

جامد طریقوں کو کال کرنا

کچھ .NET کور کلاسز کو فوری نہیں کیا جا سکتا، بشمول System.Environment اور System.Math۔ وہ ہیں جامد اور صرف جامد خصوصیات اور طریقوں پر مشتمل ہے۔ یہ بنیادی طور پر حوالہ جاتی لائبریریاں ہیں جو اشیاء کو بنائے بغیر استعمال ہوتی ہیں۔ آپ قسم کے نام کو مربع بریکٹ میں بند کر کے لٹریل کے ذریعے جامد کلاس کا حوالہ دے سکتے ہیں۔ تاہم، اگر ہم Get-Member کا استعمال کرتے ہوئے آبجیکٹ کی ساخت کو دیکھیں تو ہمیں System.Environment کی بجائے System.RuntimeType کی قسم نظر آئے گی۔

[System.Environment] | Get-Member

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

صرف جامد اراکین کو دیکھنے کے لیے، -Static پیرامیٹر کے ساتھ Get-Member کو کال کریں (آجیکٹ کی قسم کو نوٹ کریں):

[System.Environment] | Get-Member -Static

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

جامد خصوصیات اور طریقوں تک رسائی حاصل کرنے کے لیے، لغوی کے بعد وقفہ کے بجائے دو لگاتار کالون استعمال کریں:

[System.Environment]::OSVersion

یا کیا

$test=[System.Math]::Sqrt(25) 
$test
$test.GetType()

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

PSCustomObject ٹائپ کریں۔

PowerShell میں دستیاب متعدد ڈیٹا اقسام میں سے، PSCustomObject کا ذکر کرنا ضروری ہے، جو ایک من مانی ساخت کے ساتھ اشیاء کو ذخیرہ کرنے کے لیے ڈیزائن کیا گیا ہے۔ New-Object cmdlet کا استعمال کرتے ہوئے ایسی آبجیکٹ بنانا ایک کلاسک، لیکن بوجھل اور پرانا طریقہ سمجھا جاتا ہے:

$object = New-Object  –TypeName PSCustomObject -Property @{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'}

آئیے آبجیکٹ کی ساخت کو دیکھتے ہیں:

$object | Get-Member

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

PowerShell 3.0 کے ساتھ شروع کرتے ہوئے، ایک اور نحو دستیاب ہے:

$object = [PSCustomObject]@{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'
}

آپ ڈیٹا تک مساوی طریقوں میں سے کسی ایک طریقے سے رسائی حاصل کر سکتے ہیں:

$object.Name

$object.'Name'

$value = 'Name'
$object.$value

موجودہ ہیش ٹیبل کو کسی شے میں تبدیل کرنے کی ایک مثال یہ ہے:

$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

اس قسم کی اشیاء کا ایک نقصان یہ ہے کہ ان کی خصوصیات کی ترتیب بدل سکتی ہے۔ اس سے بچنے کے لیے، آپ کو [ordered] وصف استعمال کرنا چاہیے:

$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'
}

آبجیکٹ بنانے کے لیے اور بھی آپشنز ہیں: اوپر ہم نے cmdlet کو استعمال کرتے ہوئے دیکھا آبجیکٹ منتخب کریں. جو کچھ باقی ہے وہ عناصر کو شامل کرنے اور ہٹانے کا پتہ لگانا ہے۔ پچھلی مثال سے آبجیکٹ کے لیے ایسا کرنا بہت آسان ہے:

$object | Add-Member –MemberType NoteProperty –Name Age  –Value 33
$object | Get-Member

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

Add-Member cmdlet آپ کو "-MemberType ScriptMethod" کنسٹرکٹ کا استعمال کرکے نہ صرف پراپرٹیز بلکہ پہلے سے بنائے گئے $object میں طریقے شامل کرنے کی اجازت دیتا ہے:

$ScriptBlock = {
    # код 
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member

براہ کرم نوٹ کریں کہ ہم نے نئے طریقہ کے لیے کوڈ کو ذخیرہ کرنے کے لیے اسکرپٹ بلاک قسم کا $ScriptBlock متغیر استعمال کیا۔

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

خصوصیات کو ہٹانے کے لیے، متعلقہ طریقہ استعمال کریں:

$object.psobject.properties.remove('Name')

اپنی اپنی کلاسز بنانا

پاور شیل 5.0 نے وضاحت کرنے کی صلاحیت متعارف کرائی گریڈ آبجیکٹ پر مبنی پروگرامنگ زبانوں کی نحوی خصوصیت کا استعمال۔ سروس کا لفظ کلاس اس کے لیے ہے، جس کے بعد آپ کو کلاس کا نام بتانا چاہیے اور اس کے باڈی کو آپریٹر بریکٹ میں بیان کرنا چاہیے:

class MyClass
{
    # тело класса
}

یہ ایک حقیقی .NET کور قسم ہے، جس میں ایک باڈی ہے جو اس کی خصوصیات، طریقوں اور دیگر عناصر کو بیان کرتی ہے۔ آئیے سب سے آسان کلاس کی وضاحت کرنے کی ایک مثال دیکھیں:

class MyClass 
{
     [string]$Name
     [string]$City
     [string]$Country
}

ایک آبجیکٹ (کلاس مثال) بنانے کے لیے، cmdlet استعمال کریں۔ نیا آبجیکٹ، یا لغوی قسم کی [MyClass] اور pseudostatic طریقہ نیا (پہلے سے طے شدہ کنسٹرکٹر):

$object = New-Object -TypeName MyClass

یا

$object = [MyClass]::new()

آئیے آبجیکٹ کی ساخت کا تجزیہ کرتے ہیں:

$object | Get-Member

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

دائرہ کار کے بارے میں مت بھولنا: آپ کسی قسم کے نام کو سٹرنگ کے طور پر حوالہ نہیں دے سکتے ہیں یا اسکرپٹ یا ماڈیول کے باہر ٹائپ لٹریل استعمال نہیں کر سکتے ہیں جس میں کلاس کی تعریف کی گئی ہے۔ اس صورت میں، فنکشنز کلاس انسٹینس (آبجیکٹ) کو واپس کر سکتے ہیں جو ماڈیول یا اسکرپٹ سے باہر قابل رسائی ہوں گے۔

آبجیکٹ بنانے کے بعد، اس کی خصوصیات کو بھریں:

$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

نوٹ کریں کہ کلاس کی تفصیل نہ صرف پراپرٹی کی اقسام، بلکہ ان کی ڈیفالٹ قدروں کی بھی وضاحت کرتی ہے:

class Example
{
     [string]$Name = 'John Doe'
}

کلاس کے طریقہ کار کی وضاحت فنکشن کی وضاحت سے ملتی جلتی ہے، لیکن فنکشن کا لفظ استعمال کیے بغیر۔ جیسا کہ ایک فنکشن میں، اگر ضروری ہو تو پیرامیٹرز کو طریقوں میں منتقل کیا جاتا ہے:

class MyClass 
{
     [string]$Name
     [string]$City
     [string]$Country
     
     #описание метода
     Smile([bool]$param1)
     {
         If($param1) {
            Write-Host ':)'
         }
     }
}

اب ہماری کلاس کا نمائندہ مسکرا سکتا ہے:

$object = [MyClass]::new()
$object.Smile($true)

طریقوں کو اوورلوڈ کیا جا سکتا ہے؛ اس کے علاوہ، ایک کلاس ہے جامد خصوصیات اور طریقے، نیز کنسٹرکٹرز جن کے نام خود کلاس کے نام کے ساتھ ملتے ہیں۔ اسکرپٹ یا پاور شیل ماڈیول میں بیان کردہ کلاس دوسرے کے لیے بنیاد کے طور پر کام کر سکتی ہے - اس طرح وراثت کو لاگو کیا جاتا ہے۔ اس صورت میں، اسے موجودہ .NET کلاسز کو بطور بیس استعمال کرنے کی اجازت ہے:

class MyClass2 : MyClass
{
      #тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)

PowerShell میں اشیاء کے ساتھ کام کرنے کی ہماری تفصیل شاید ہی مکمل ہو۔ مندرجہ ذیل اشاعتوں میں، ہم عملی مثالوں کے ساتھ اس کو مزید گہرا کرنے کی کوشش کریں گے: سیریز کا پانچواں مضمون تیسری پارٹی کے سافٹ ویئر اجزاء کے ساتھ PowerShell کو مربوط کرنے کے مسائل کے لیے وقف کیا جائے گا۔ ماضی کے حصے نیچے دیے گئے لنکس پر مل سکتے ہیں۔

حصہ 1: ونڈوز پاور شیل کی بنیادی خصوصیات
حصہ 2: ونڈوز پاور شیل پروگرامنگ لینگویج کا تعارف
حصہ 3: پیرامیٹرز کو اسکرپٹس اور فنکشنز میں منتقل کرنا، cmdlets بنانا

ونڈوز پاور شیل کیا ہے اور اس کا استعمال کیا ہے؟ حصہ 4: اشیاء کے ساتھ کام کرنا، اپنی کلاسز

ماخذ: www.habr.com

نیا تبصرہ شامل کریں