Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

PowerShell مترجم ونڊو ۾ حڪمن جو ٽيڪسٽ آئوٽ صرف معلومات کي ظاهر ڪرڻ جو هڪ طريقو آهي جيڪو انساني تصور لاءِ موزون آهي. دراصل اربع مبني شين سان ڪم ڪرڻ لاءِ: cmdlets ۽ فنڪشن انهن کي ان پٽ طور وصول ڪندا آهن ۽ نڪرڻ تي واپس آيو, ۽ متغير جا قسم انٽرايڪٽو ۽ اسڪرپٽس ۾ موجود آهن .NET ڪلاسن تي ٻڌل آهن. سيريز جي چوٿين مضمون ۾، اسان وڌيڪ تفصيل سان شين سان ڪم ڪرڻ جو مطالعو ڪنداسين.

جواب:

PowerShell ۾ شيون
شين جي ساخت کي ڏسڻ
شين کي فلٽر ڪرڻ
شين کي ترتيب ڏيڻ
شيون ۽ انهن جا حصا چونڊڻ
هر شئي لاءِ، گروپ-آبجڪٽ ۽ ماپ-آبجڪٽ
.NET ۽ COM شيون ٺاهڻ (نئون اعتراض)
جامد طريقن کي سڏڻ
ٽائيپ ڪريو PSCustomObject
پنهنجا پنهنجا ڪلاس ٺاهڻ

PowerShell ۾ شيون

اچو ته ياد رکون ته هڪ اعتراض ڊيٽا جي فيلڊ (پراپرٽيز، واقعن، وغيره) جو مجموعو آهي ۽ انهن جي پروسيسنگ لاء طريقن (طريقن). ان جي جوڙجڪ ھڪڙي قسم جي طرفان بيان ڪئي وئي آھي، جيڪو عام طور تي متحد .NET ڪور پليٽ فارم ۾ استعمال ٿيل طبقن تي ٻڌل آھي. اهو پڻ ممڪن آهي COM، CIM (WMI) ۽ ADSI شين سان ڪم ڪرڻ. ڊيٽا تي مختلف عملن کي انجام ڏيڻ لاءِ پراپرٽيز ۽ طريقن جي ضرورت پوندي آهي؛ ان کان علاوه، PowerShell ۾، شيون فنڪشنز ۽ cmdlets ڏانهن دليلن جي طور تي منظور ڪري سگھجن ٿيون، انهن جي قدرن کي متغيرن ڏانهن لڳايو وڃي ٿو، ۽ اتي پڻ آهي. حڪم جي جوڙجڪ ميڪانيزم (conveyor يا پائپ لائن). پائپ لائن ۾ هر حڪم ان جي پيداوار کي ايندڙ هڪ ڏانهن منتقل ڪري ٿو، اعتراض طرفان اعتراض. پروسيسنگ لاءِ، توهان مرتب ڪيل cmdlets استعمال ڪري سگهو ٿا يا پنهنجو پاڻ ٺاهي سگهو ٿا ترقي يافته خاصيتونپائپ لائن ۾ موجود شين سان مختلف ٺاھڻ کي انجام ڏيڻ: فلٽرنگ، ترتيب ڏيڻ، گروپ ڪرڻ، ۽ حتي انھن جي جوڙجڪ کي تبديل ڪرڻ. هن فارم ۾ ڊيٽا کي منتقل ڪرڻ جو هڪ سنگين فائدو آهي: وصول ڪندڙ ٽيم کي بائيٽ اسٽريم (ٽيڪسٽ) کي پارس ڪرڻ جي ضرورت ناهي، تمام ضروري معلومات آساني سان حاصل ڪئي ويندي آهي مناسب ملڪيت ۽ طريقن کي ڪال ڪندي.

شين جي ساخت کي ڏسڻ

مثال طور، اچو ته هلون Get-Process cmdlet، جيڪو توهان کي سسٽم ۾ هلندڙ عملن بابت معلومات حاصل ڪرڻ جي اجازت ڏئي ٿو:

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

اهو ڪجهه فارميٽ ٿيل ٽيڪسٽ ڊيٽا ڏيکاريندو جيڪو واپس ڪيل شين جي ملڪيت ۽ انهن جي طريقن بابت ڪا به ڄاڻ نه ڏيندو. آئوٽ پٽ کي ٺيڪ ڪرڻ لاءِ، اسان کي سکڻ جي ضرورت آهي ته شين جي ساخت کي ڪيئن جانچيو وڃي، ۽ Get-Member cmdlet اسان جي مدد ڪندو:

Get-Process | Get-Member

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

هتي اسان اڳ ۾ ئي قسم ۽ ساخت کي ڏسون ٿا، ۽ اضافي پيٽرولر جي مدد سان اسين، مثال طور، صرف ان پٽ ۾ شامل ڪيل اعتراض جي ملڪيت کي ڏيکاري سگهون ٿا:

Get-Process | Get-Member -MemberType Property

ھن علم جي ضرورت پوندي انتظامي مسئلن کي حل ڪرڻ لاءِ يا پنھنجيون اسڪرپٽ لکڻ لاءِ: مثال طور، جوابي ملڪيت استعمال ڪندي ھنگ پروسيس بابت معلومات حاصل ڪرڻ لاءِ.

شين کي فلٽر ڪرڻ

PowerShell انهن شين کي اجازت ڏئي ٿو جيڪي هڪ خاص شرط کي پورا ڪن ٿا پائپ لائن ذريعي.

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

اسڪرپٽ بلاڪ تي عمل ڪرڻ جو نتيجو قوس جي اندر اندر هڪ بوليان قدر هجڻ گهرجي. جيڪڏھن اھو سچو آھي ($true)، اھو اعتراض جيڪو ان پٽ ھوندو آھي ڪٿي-Object cmdlet پائپ لائن سان گڏ گذريو ويندو، ٻي صورت ۾ ($false) ان کي ختم ڪيو ويندو. مثال طور، اچو ته بند ٿيل ونڊوز سرور سروسز جي لسٽ ڏيکاريون، يعني. اُھي جن جي اسٽيٽس پراپرٽي سيٽ ڪئي وئي آھي ”روڪيو“:

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

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

هتي ٻيهر اسان هڪ متن جي نمائندگي ڏسون ٿا، پر جيڪڏهن توهان پائپ لائن مان گذرڻ واري شين جي قسم ۽ اندروني ساخت کي سمجهڻ چاهيو ته اهو ڏکيو ناهي:

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

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

شين کي ترتيب ڏيڻ

جڏهن پائپ لائن شين جي پروسيسنگ، اڪثر ڪري انهن کي ترتيب ڏيڻ جي ضرورت آهي. Sort-Object cmdlet کي پراپرٽيز جا نالا پاس ڪيا وڃن ٿا (ترتيب ڪرڻ واري ڪيز) ۽ واپسي شيون انھن جي قدرن موجب ترتيب ڏنل آھن. سي پي يو جي خرچ ڪيل وقت (سي پي يو پراپرٽي) ذريعي هلندڙ عملن جي پيداوار کي ترتيب ڏيڻ آسان آهي:

Get-Process | Sort-Object –Property cpu

-پراپرٽي پيٽرولر کي ختم ڪري سگھجي ٿو جڏھن سڏين ٿا Sort-Object cmdlet؛ اھو ڊفالٽ طور استعمال ٿيندو آھي. ريورس ترتيب ڏيڻ لاء، استعمال ڪريو -Descending پيٽرول:

Get-Process | Sort-Object cpu -Descending

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

شيون ۽ انهن جا حصا چونڊڻ

Select-Object cmdlet توھان کي اجازت ڏئي ٿو ھڪڙي مخصوص تعداد کي چونڊڻ لاءِ پائپ لائن جي شروعات يا آخر ۾ -First or -Last parameters استعمال ڪندي. ان جي مدد سان، توهان اڪيلو شيون يا ڪجهه خاصيتون چونڊي سگهو ٿا، ۽ انهن جي بنياد تي نيون شيون ٺاهي سگهو ٿا. اچو ته ڏسو ته ڪيئن cmdlet ڪم ڪري ٿو سادو مثال استعمال ڪندي.

هيٺ ڏنل حڪم 10 پروسيس بابت معلومات ڏيکاري ٿو جيڪا وڌ ۾ وڌ مقدار کي استعمال ڪندي رام (WS ملڪيت):

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

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

توھان پائپ لائن مان گذرندڙ شين جي صرف ڪجھ خاص ملڪيتن کي منتخب ڪري سگھو ٿا ۽ انھن جي بنياد تي نوان ٺاھي سگھو ٿا:

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

پائپ لائن جي آپريشن جي نتيجي ۾، اسان کي هڪ نئون اعتراض ملندو، جنهن جي جوڙجڪ Get-Process cmdlet پاران واپس ڪيل ساخت کان مختلف هوندي. اچو ته ان جي تصديق ڪريون Get-Member استعمال ڪندي:

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

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

نوٽ ڪريو ته Select-Object ھڪڙي ھڪڙي شئي (-First 1) کي موٽائي ٿو جنھن ۾ صرف ٻه فيلڊ آھن جن کي اسان بيان ڪيو آھي: انھن جي قيمتن کي نقل ڪيو ويو آھي پھرئين اعتراض مان نڪري ويو جيڪو پائپ لائن ۾ گذري ويو Get-Process cmdlet. PowerShell اسڪرپٽ ۾ شيون ٺاهڻ جي طريقن مان هڪ آهي Select-Object استعمال ڪرڻ تي ٻڌل آهي:

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

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

استعمال ڪندي Select-Object، توھان شامل ڪري سگھو ٿا ڪمپيوٽيڊ پراپرٽيز کي شيون جيڪي ظاھر ٿيڻ گهرجن hash ٽيبل. انهي صورت ۾، ان جي پهرين ڪنجي جو قدر ملڪيت جي نالي سان ملندو آهي، ۽ ٻئي ڪنجي جو قدر موجوده پائپ لائن عنصر جي ملڪيت جي قيمت سان ملندو آهي:

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

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

اچو ته ڪنويئر مان گذرندڙ شين جي ساخت کي ڏسو:

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

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

هر شئي لاءِ، گروپ-آبجڪٽ ۽ ماپ-آبجڪٽ

شيون سان ڪم ڪرڻ لاء ٻيا cmdlets آهن. مثال طور، اچو ته ٽي سڀ کان وڌيڪ مفيد بابت ڳالهايون:

ھڪڙي مقصد توهان کي پائيپ لائين ۾ هر شئي لاءِ پاور شيل ڪوڊ هلائڻ جي اجازت ڏئي ٿي:

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

گروپ- اعتراض ملڪيت جي قيمت جي لحاظ سان شيون گروپن:

Group-Object PropertyName

جيڪڏهن توهان ان کي هلائيندا آهيو -NoElement پيٽرول، توهان ڳولي سگهو ٿا گروپن ۾ عناصر جو تعداد.

ماپ- اعتراض پائپ لائن ۾ آبجیکٹ فيلڊ ويلز ذريعي مختلف سمري پيٽرولر کي گڏ ڪري ٿو (مجموعي کي ڳڻڻ، ۽ پڻ گهٽ ۾ گهٽ، وڌ ۾ وڌ يا اوسط قدر ڳولي ٿو):

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

عام طور تي، بحث ڪيل cmdlets استعمال ڪيا ويندا آهن، ۽ اڪثر ڪري اسڪرپٽ ۾ ٺاهيا ويندا آهن. ڪم شروعات، عمل ۽ آخر بلاڪ سان.

.NET ۽ COM شيون ٺاهڻ (نئون اعتراض)

.NET ڪور ۽ COM انٽرفيس سان گڏ ڪيترائي سافٽ ويئر جزا آھن جيڪي سسٽم منتظمين لاءِ ڪارآمد آھن. System.Diagnostics.EventLog ڪلاس استعمال ڪندي، توهان سڌو سنئون Windows PowerShell مان سسٽم لاگ منظم ڪري سگهو ٿا. اچو ته هڪ مثال ڏسون هن ڪلاس جو هڪ مثال ٺاهڻ جو نئون-Object cmdlet استعمال ڪندي -TypeName پيٽرول سان:

New-Object -TypeName System.Diagnostics.EventLog

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

جيئن ته اسان هڪ مخصوص واقعي جي لاگ ان جي وضاحت نه ڪئي آهي، ڪلاس جي نتيجي ۾ ڪا به ڊيٽا شامل ناهي. ھن کي تبديل ڪرڻ لاء، توھان کي سڏڻ جي ضرورت آھي ھڪڙي خاص ٺاھيندڙ طريقي سان ان جي ٺاھڻ دوران استعمال ڪندي -ArgumentList پيٽرول. جيڪڏهن اسان ايپليڪيشن لاگ تائين رسائي ڪرڻ چاهيون ٿا، اسان کي "ايپليڪيشن" اسٽرنگ کي تعمير ڪندڙ کي دليل طور منتقل ڪرڻ گهرجي:

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

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

مهرباني ڪري نوٽ ڪريو ته اسان $AppLog متغير ۾ ڪمانڊ جي آئوٽ کي محفوظ ڪيو. جيتوڻيڪ پائپ لائنون عام طور تي انٽرايڪٽو موڊ ۾ استعمال ٿينديون آهن، لکت لکندڙ اڪثر ڪري هڪ اعتراض جي حوالي سان برقرار رکڻ جي ضرورت آهي. اضافي طور تي، بنيادي .NET ڪور ڪلاس سسٽم جي نالي جي جاء تي مشتمل آهن: ڊفالٽ طور پاور شيل ان ۾ مخصوص قسمن کي ڳولي ٿو، تنهنڪري System.Diagnostics.EventLog جي بدران Diagnostics.EventLog لکڻ بلڪل صحيح آهي.

لاگ سان ڪم ڪرڻ لاء، توهان مناسب طريقا استعمال ڪري سگهو ٿا:

$AppLog | Get-Member -MemberType Method

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

اچو ته چئو ته اهو صاف () طريقي سان صاف ڪيو ويو آهي جيڪڏهن رسائي جا حق آهن:

$AppLog.Clear()

New-Object cmdlet پڻ استعمال ڪيو ويندو آھي ڪم ڪرڻ لاءِ COM اجزاء سان. انهن مان ڪافي آهن - ونڊوز اسڪرپٽ سرور سان فراهم ڪيل لائبريرين کان وٺي ActiveX ايپليڪيشنون، جهڙوڪ انٽرنيٽ ايڪسپلورر. هڪ COM اعتراض ٺاهڻ لاء، توهان کي مقرر ڪرڻ جي ضرورت آهي -ComObject پيٽرولر مطلوب طبقي جي پروگراماتي ProgId سان:

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.RuntimeType بدران System.Environment:

[System.Environment] | Get-Member

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

صرف جامد ميمبرن کي ڏسڻ لاءِ، ڪال ڪريو Get-Member with the -Static parameter (نوٽ ڪريو اعتراض جو قسم):

[System.Environment] | Get-Member -Static

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

جامد ملڪيتن ۽ طريقن تائين رسائي حاصل ڪرڻ لاءِ، لفظي کان پوءِ واري عرصي جي بدران ٻه لڳاتار ڪالون استعمال ڪريو:

[System.Environment]::OSVersion

يا

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

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

ٽائيپ ڪريو PSCustomObject

PowerShell ۾ موجود ڊيٽا جي ڪيترن ئي قسمن مان، اهو PSCustomObject جو ذڪر ڪرڻ جي لائق آهي، جيڪو ذخيره اندوزي واري ڍانچي سان شيون محفوظ ڪرڻ لاءِ ٺهيل آهي. New-Object cmdlet استعمال ڪندي اهڙي شئي ٺاهڻ کي ڪلاسيڪل، پر مشڪل ۽ پراڻو طريقو سمجهيو ويندو آهي:

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

اچو ته شئي جي ساخت کي ڏسو:

$object | Get-Member

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 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()

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

هن قسم جي شين جي نقصانن مان هڪ اهو آهي ته انهن جي ملڪيت جي ترتيب تبديل ٿي سگهي ٿي. هن کان بچڻ لاء، توهان کي [آرڊر ٿيل] وصف استعمال ڪرڻ گهرجي:

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

هڪ اعتراض ٺاهڻ لاء ٻيا اختيار آهن: مٿي اسان cmdlet استعمال ڪندي ڏٺو چونڊ-آبجیکٹ. باقي اهو آهي ته عناصر شامل ڪرڻ ۽ ختم ڪرڻ جو اندازو لڳائڻ. پوئين مثال مان اعتراض لاءِ ائين ڪرڻ بلڪل سادو آهي:

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

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

Add-Member cmdlet توهان کي "-MemberType ScriptMethod" تعمير استعمال ڪندي نه صرف ملڪيت شامل ڪرڻ جي اجازت ڏئي ٿو، پر اڳ ۾ ٺهيل $object ۾ طريقا پڻ:

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

مهرباني ڪري نوٽ ڪريو ته اسان استعمال ڪيو $ScriptBlock متغير جو قسم ScriptBlock نئين طريقي لاءِ ڪوڊ اسٽور ڪرڻ لاءِ.

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

ملڪيت کي ختم ڪرڻ لاء، لاڳاپيل طريقو استعمال ڪريو:

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

پنهنجا پنهنجا ڪلاس ٺاهڻ

PowerShell 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

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

گنجائش جي باري ۾ نه وساريو: توهان هڪ قسم جي نالي کي اسٽرنگ جي طور تي حوالو نه ٿا ڪري سگهو يا اسڪرپٽ يا ماڊل کان ٻاهر هڪ قسم لفظي استعمال ڪري سگهو ٿا جنهن ۾ ڪلاس جي وضاحت ڪئي وئي آهي. انهي صورت ۾، فنڪشن واپس ڪري سگھن ٿا ڪلاس مثال (آبجڪٽ) جيڪي ماڊيول يا اسڪرپٽ کان ٻاهر پهچندا.

اعتراض ٺاهڻ کان پوء، ان جي خاصيتن کي ڀريو:

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

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 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 ٺاهڻ

Windows PowerShell ڇا آهي ۽ اهو ڇا لاءِ استعمال ٿيندو آهي؟ حصو 4: شين سان ڪم ڪرڻ، پنهنجا طبقا

جو ذريعو: www.habr.com

تبصرو شامل ڪريو