Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

PowerShell စကားပြန်ဝင်းဒိုးရှိ အမိန့်စာများ၏ စာသားအထွက်သည် လူသားဖတ်နိုင်သောပုံစံဖြင့် အချက်အလက်ကိုပြသသည့်နည်းလမ်းတစ်ခုမျှသာဖြစ်သည်။ တကယ်တော့ ပတ်ဝန်းကျင် ဦးတည်သည်။ အရာဝတ္ထုများနှင့် လုပ်ဆောင်ရန်- cmdlets နှင့် functions များသည် ၎င်းတို့အား input အဖြစ် လက်ခံရယူသည်။ ထွက်ပေါက်မှာပြန်လာနှင့် အပြန်အလှန်အကျိုးပြုနိုင်သော ကွဲပြားသောအမျိုးအစားများနှင့် scripts များတွင် .NET အတန်းများကို အခြေခံထားသည်။ စီးရီး၏ စတုတ္ထဆောင်းပါးတွင်၊ ကျွန်ုပ်တို့သည် အရာဝတ္ထုများနှင့် လုပ်ဆောင်ခြင်းကို ပိုမိုအသေးစိတ်လေ့လာပါမည်။

မာတိကာ:

PowerShell ရှိ အရာဝတ္ထုများ
အရာဝတ္ထုများ၏ဖွဲ့စည်းပုံကိုကြည့်ရှုခြင်း။
အရာဝတ္ထုများကို စစ်ထုတ်ခြင်း။
အရာဝတ္ထုများကို စီခြင်း။
အရာဝတ္ထုများနှင့် ၎င်းတို့၏ အစိတ်အပိုင်းများကို ရွေးချယ်ခြင်း။
ForEach-Object၊ Group-Object နှင့် Measure-Object
.NET နှင့် COM အရာဝတ္ထုများ ဖန်တီးခြင်း (New-Object)
အငြိမ်နည်းလမ်းများ ခေါ်ဆိုခြင်း။
PSCustomObject အမျိုးအစား
သင်၏ကိုယ်ပိုင်အတန်းများကိုဖန်တီးပါ။

PowerShell ရှိ အရာဝတ္ထုများ

အရာဝတ္ထုတစ်ခုသည် ဒေတာအကွက်များ (Properties, Events, etc.) နှင့် ၎င်းတို့ကို လုပ်ဆောင်ရန် နည်းလမ်းများ (methods) များ အစုအဝေးတစ်ခုဖြစ်ကြောင်း သတိရကြပါစို့။ ၎င်း၏ဖွဲ့စည်းပုံသည် အများအားဖြင့် တစ်စုတစ်စည်းတည်းဖြစ်သော .NET Core ပလပ်ဖောင်းတွင် အသုံးပြုသည့် အတန်းများအပေါ် အခြေခံသည့် အမျိုးအစားတစ်ခုဖြင့် သတ်မှတ်သည်။ ၎င်းသည် COM၊ CIM (WMI) နှင့် ADSI အရာဝတ္ထုများနှင့်လည်း လုပ်ဆောင်နိုင်သည်။ ဒေတာအပေါ် အမျိုးမျိုးသော လုပ်ဆောင်ချက်များကို လုပ်ဆောင်ရန် Properties နှင့် Method များသည် လိုအပ်သည်၊ ထို့အပြင် PowerShell တွင် အရာဝတ္ထုများကို လုပ်ဆောင်ချက်များနှင့် cmdlets များသို့ အကြောင်းပြချက်များအဖြစ် ကျော်ဖြတ်နိုင်ပြီး၊ ၎င်းတို့၏ တန်ဖိုးများကို ကိန်းရှင်များသို့ သတ်မှတ်ပေးနိုင်သည်။ အမိန့်ပေးဖွဲ့စည်းမှုယန္တရား (ပိုက်လိုင်း)။ ပိုက်လိုင်းရှိ command တစ်ခုစီသည် ၎င်း၏ output ကို နောက်တစ်ခုသို့ လွှဲသွားသည်၊ အရာဝတ္ထုအလိုက် အရာဝတ္ထုတစ်ခုစီကို အလှည့်တွင် ပေးပို့သည်။ လုပ်ဆောင်ရန် သို့မဟုတ် သင့်ကိုယ်ပိုင်ဖန်တီးရန်အတွက် စုစည်းထားသော cmdlets ကိုသုံးနိုင်သည်။ အဆင့်မြင့်အင်္ဂါရပ်များပိုက်လိုင်းရှိ အရာဝတ္ထုများနှင့် အမျိုးမျိုးသော ခြယ်လှယ်မှုများကို လုပ်ဆောင်ရန်- စစ်ထုတ်ခြင်း၊ စီခြင်း၊ အုပ်စုဖွဲ့ခြင်းနှင့် ၎င်းတို့၏ ဖွဲ့စည်းပုံကို ပြောင်းလဲခြင်းပင်။ ဤဖောင်တွင် ဒေတာလွှဲပြောင်းခြင်းတွင် လေးနက်သောအားသာချက်ရှိသည်- လက်ခံရေးအဖွဲ့သည် ဘိုက်စီးကြောင်း (စာသားကို ခွဲခြမ်းစိတ်ဖြာရန် မလိုအပ်ပါ)၊ သက်ဆိုင်ရာ ဂုဏ်သတ္တိများနှင့် နည်းလမ်းများကို အသုံးပြုခြင်းဖြင့် လိုအပ်သော အချက်အလက်အားလုံးကို အလွယ်တကူ ထုတ်ယူနိုင်သည်။

အရာဝတ္ထုများ၏ဖွဲ့စည်းပုံကိုကြည့်ရှုခြင်း။

ဥပမာအနေနဲ့၊ စနစ်ထဲမှာ လုပ်ဆောင်နေတဲ့ လုပ်ငန်းစဉ်တွေအကြောင်း အချက်အလက်တွေကို ရယူခွင့်ပြုတဲ့ Get-Process cmdlet ကို ဖွင့်ကြည့်ရအောင်။

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

ပြန်ပေးသည့်အရာဝတ္ထုများ၏ ဂုဏ်သတ္တိများနှင့် ၎င်းတို့၏နည်းလမ်းများအကြောင်း မည်သည့်အကြံဥာဏ်မှမပေးသည့် ဖော်မတ်လုပ်ထားသော စာသားဒေတာအချို့ကို စခရင်သို့ ထုတ်ပေးမည်ဖြစ်သည်။ အထွက်အား ချိန်ညှိရန်၊ အရာဝတ္ထုများ၏ ဖွဲ့စည်းပုံကို ဆန်းစစ်နည်းကို လေ့လာရန် လိုအပ်ပြီး Get-Member cmdlet သည် ကျွန်ုပ်တို့အား ဤအရာကို ကူညီပေးပါမည်-

Get-Process | Get-Member

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

ဤနေရာတွင် ကျွန်ုပ်တို့သည် အမျိုးအစားနှင့် ဖွဲ့စည်းပုံကို မြင်ထားပြီးသားဖြစ်ပြီး၊ အပိုဘောင်ဘောင်များအကူအညီဖြင့် ဥပမာအားဖြင့်၊ ထည့်သွင်းသောအရာဝတ္ထု၏ ဂုဏ်သတ္တိများကိုသာ ပြသနိုင်သည်-

Get-Process | Get-Member -MemberType Property

အပြန်အလှန်တုံ့ပြန်မှုမုဒ်တွင် စီမံခန့်ခွဲရေးတာဝန်များကို ဖြေရှင်းရန် သို့မဟုတ် သင့်ကိုယ်ပိုင် scripts များရေးသားရန် ဤအသိပညာ လိုအပ်လိမ့်မည်- ဥပမာ၊ တုံ့ပြန်မှုပိုင်ဆိုင်မှုကို အသုံးပြု၍ ချိတ်ဆွဲထားသည့် လုပ်ငန်းစဉ်များအကြောင်း အချက်အလက်ရယူရန်။

အရာဝတ္ထုများကို စစ်ထုတ်ခြင်း။

PowerShell သည် သင့်အား သတ်မှတ်ထားသော အခြေအနေနှင့် ကိုက်ညီသည့် ပိုက်လိုင်းမှတဆင့် အရာဝတ္ထုများကို ဖြတ်သန်းခွင့်ပြုသည်-

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

အော်ပရေတာကွင်းပိတ်များတွင် script ပိတ်ဆို့ခြင်းကို လုပ်ဆောင်ခြင်း၏ရလဒ်သည် ယုတ္တိတန်ဖိုးဖြစ်ရပါမည်။ အကယ်၍ ၎င်းသည် အမှန် ($true)၊ Where-Object cmdlet တွင် ထည့်သွင်းထားသော အရာဝတ္ထုသည် ပိုက်လိုင်းတစ်လျှောက် ထပ်ဆင့်ဖြတ်သန်းသွားမည်ဖြစ်ပြီး၊ မဟုတ်ပါက (တန်ဖိုး $false) ကို ဖျက်ပစ်မည်ဖြစ်သည်။ ဥပမာအနေဖြင့်၊ ရပ်တန့်ထားသော Windows Server ဝန်ဆောင်မှုများစာရင်းကို ဖော်ပြကြပါစို့၊ ဆိုလိုသည်မှာ Status ပိုင်ဆိုင်မှုတန်ဖိုး "Stopped" ရှိသောသူများ၊

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 သည် ဂုဏ်သတ္တိများ (sort keys) ၏ အမည်များကို လက်ခံရရှိပြီး ၎င်းသည် ၎င်းတို့၏ တန်ဖိုးများဖြင့် စီထားသော အရာများကို ပြန်ပေးသည်။ လုပ်ဆောင်နေသည့် လုပ်ငန်းစဉ်များ၏ အထွက်ကို သုံးစွဲသည့် ပရိုဆက်ဆာအချိန် (cpu ပိုင်ဆိုင်မှု) ဖြင့် အလွယ်တကူ စီခွဲနိုင်သည်-

Get-Process | Sort-Object –Property cpu

Sort-Object cmdlet ကိုခေါ်သောအခါ -Property parameter ကို ချန်လှပ်ထားနိုင်ပါသည်။ ၎င်းကို default အနေဖြင့်အသုံးပြုသည်။ ပြောင်းပြန်စီခြင်းအတွက်၊ -Descending parameter ကိုအသုံးပြုသည်-

Get-Process | Sort-Object cpu -Descending

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

အရာဝတ္ထုများနှင့် ၎င်းတို့၏ အစိတ်အပိုင်းများကို ရွေးချယ်ခြင်း။

Select-Object cmdlet သည် -First သို့မဟုတ် -Last parameters များကို အသုံးပြု၍ ပိုက်လိုင်းတစ်ခု၏အစ သို့မဟုတ် အဆုံးတွင် အချို့သော အရာဝတ္ထုအချို့ကို ရွေးချယ်နိုင်စေပါသည်။ အရာဝတ္ထုတစ်ခုချင်းစီ သို့မဟုတ် သီးခြားဂုဏ်သတ္တိများကို ရွေးချယ်ရန်နှင့် ၎င်းတို့အပေါ်အခြေခံ၍ အရာဝတ္ထုအသစ်များဖန်တီးရန် ၎င်းကို အသုံးပြုနိုင်သည်။ ရိုးရှင်းသောနမူနာများကိုအသုံးပြု၍ cmdlet မည်ကဲ့သို့အလုပ်လုပ်သည်ကိုကြည့်ကြပါစို့။

အောက်ဖော်ပြပါ command သည် RAM ပမာဏအများဆုံးသုံးစွဲသည့် လုပ်ငန်းစဉ် 10 ခုအကြောင်း အချက်အလက်ကို ပြသသည်-

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

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

Conveyor မှတဆင့် ဖြတ်သန်းသွားသော အရာဝတ္ထုများ၏ အချို့သော ဂုဏ်သတ္တိများကိုသာ ရွေးချယ်နိုင်ပြီး ၎င်းတို့အပေါ် အခြေခံ၍ အသစ်များကို ဖန်တီးနိုင်သည်-

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 မှ ပိုက်လိုင်းသို့ ပေးပို့သော ပထမအရာဝတ္ထုမှ ၎င်းတို့၏တန်ဖိုးများကို ကူးယူထားသည်။ Select-Object ကိုအသုံးပြုခြင်းသည် PowerShell scripts များတွင် အရာဝတ္ထုများကို ဖန်တီးရန် နည်းလမ်းတစ်ခုဖြစ်သည်-

$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- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

Conveyor မှတဆင့် ဖြတ်သန်းသွားသော အရာဝတ္ထုများ၏ ဖွဲ့စည်းပုံကို ကြည့်ကြပါစို့။

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

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

ForEach-Object၊ Group-Object နှင့် Measure-Object

Object များနှင့် လုပ်ဆောင်ရန် အခြားသော cmdlets များ ရှိပါသည်။ ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့သည် သင့်အား အသုံးဝင်ဆုံး သုံးခုအကြောင်း ပြောပြပါမည်။

ForEach-Object ပိုက်လိုင်းရှိ အရာဝတ္ထုတစ်ခုစီအတွက် PowerShell ကုဒ်ကို သင်လုပ်ဆောင်နိုင်သည်-

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

အုပ်စု-အရာဝတ္ထု ပစ္စည်းတန်ဖိုးအလိုက် အရာဝတ္ထုများကို အုပ်စုဖွဲ့ပါ-

Group-Object PropertyName

၎င်းကို -NoElement parameter ဖြင့် run ပါက၊ အုပ်စုများရှိ element အရေအတွက်ကို သင်ရှာဖွေနိုင်သည်။

တိုင်းတာ-အရာဝတ္ထု ပိုက်လိုင်းရှိ အရာဝတ္ထုများ၏ နယ်ပယ်များ၏ တန်ဖိုးများဖြင့် အမျိုးမျိုးသော အကျဉ်းချုပ် ဘောင်များကို ပေါင်းစည်းသည် (ပေါင်းလဒ်ကို တွက်ချက်ပြီး အနိမ့်ဆုံး၊ အမြင့်ဆုံး သို့မဟုတ် ပျမ်းမျှတန်ဖိုးကိုလည်း ရှာဖွေသည်)။

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

ပုံမှန်အားဖြင့်၊ ဆွေးနွေးထားသော cmdlets များကို အပြန်အလှန်အကျိုးသက်ရောက်မှုမုဒ်တွင် အသုံးပြုကြပြီး scripts များတွင် ပို၍မကြာခဏဖန်တီးကြသည်။ လုပ်ငန်းဆောင်တာ Begin၊ Process နှင့် End လုပ်ကွက်များဖြင့်။

.NET နှင့် COM အရာဝတ္ထုများ ဖန်တီးခြင်း (New-Object)

စနစ်စီမံခန့်ခွဲသူများအတွက် အသုံးဝင်သော .NET Core နှင့် COM အင်တာဖေ့စ်များပါရှိသော ဆော့ဖ်ဝဲအစိတ်အပိုင်းများစွာရှိပါသည်။ System.Diagnostics.EventLog အတန်းအစားကို အသုံးပြု၍ သင်သည် Windows PowerShell မှ စနစ်မှတ်တမ်းများကို တိုက်ရိုက်စီမံခန့်ခွဲနိုင်သည်။ -TypeName parameter ဖြင့် New-Object cmdlet ကို အသုံးပြု၍ ဤအတန်း၏ instance တစ်ခုကို ဖန်တီးခြင်း၏ ဥပမာကို ကြည့်ကြပါစို့။

New-Object -TypeName System.Diagnostics.EventLog

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

သတ်သတ်မှတ်မှတ် ဖြစ်ရပ်မှတ်တမ်းတစ်ခုကို ကျွန်ုပ်တို့ မသတ်မှတ်ထားသောကြောင့် ထွက်ပေါ်လာသော အတန်းအစားတွင် မည်သည့်ဒေတာမျှ မပါဝင်ပါ။ ၎င်းကိုပြောင်းလဲရန် -ArgumentList parameter ကို အသုံးပြု၍ ၎င်း၏ဖန်တီးမှုအတွင်း အထူးတည်ဆောက်ရေးနည်းလမ်းကို ကျွန်ုပ်တို့ခေါ်ဆိုရန် လိုအပ်ပါသည်။ ကျွန်ုပ်တို့သည် အပလီကေးရှင်းမှတ်တမ်းကို ဝင်ရောက်လိုပါက၊ ကျွန်ုပ်တို့သည် တည်ဆောက်သူအား အကြောင်းပြချက်အဖြစ် "Application" စာကြောင်းကို ပေးပို့သင့်သည်-

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

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

command output ကို $AppLog variable တွင် သိမ်းဆည်းထားကြောင်း သတိပြုပါ။ ပိုက်လိုင်းများကို အပြန်အလှန်အကျိုးသက်ရောက်မှုမုဒ်တွင် အသုံးများသော်လည်း၊ scripting သည် အရာဝတ္ထုတစ်ခုအား ရည်ညွှန်းချက်တစ်ခုကို သိမ်းဆည်းထားရန် လိုအပ်ပါသည်။ ထို့အပြင်၊ core .NET Core အတန်းများကို System namespace တွင်ပါ၀င်သည်- PowerShell သည် ဤအမျိုးအစားများကို မူရင်းအတိုင်းရှာဖွေသည်၊ ထို့ကြောင့် System.Diagnostics.EventLog အစား Diagnostics.EventLog ကိုရေးခြင်းသည် မှန်ကန်ပါသည်။

မှတ်တမ်းနှင့်အတူ အလုပ်လုပ်ရန်၊ သက်ဆိုင်သောနည်းလမ်းများကို သင်အသုံးပြုနိုင်သည်-

$AppLog | Get-Member -MemberType Method

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

ဝင်ရောက်ခွင့် အခွင့်အရေးများ ရရှိပါက Clear() နည်းလမ်းကို အသုံးပြု၍ ရှင်းလင်းသည်ဟု ဆိုကြပါစို့။

$AppLog.Clear()

New-Object cmdlet ကို COM အစိတ်အပိုင်းများနှင့် အလုပ်လုပ်ရန်လည်း အသုံးပြုပါသည်။ ၎င်းတို့ထဲမှ အချို့မှာ Windows script server မှ ထောက်ပံ့ပေးထားသော စာကြည့်တိုက်များမှ Internet Explorer ကဲ့သို့သော 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 အရာဝတ္ထုများကိုလည်း လေ့လာပါမည်။

အငြိမ်နည်းလမ်းများ ခေါ်ဆိုခြင်း။

System.Environment နှင့် System.Math အပါအဝင် ချက်ခြင်းမရနိုင်သော အချို့သော .NET Core အတန်းများ ရှိပါသည်။ သူတို့က အငြိမ် နှင့် တည်ငြိမ်ဂုဏ်သတ္တိများနှင့် နည်းလမ်းများသာ ပါရှိသည်။ အနှစ်သာရအားဖြင့်၊ ၎င်းတို့သည် အရာဝတ္ထုများကို ဖန်တီးခြင်းမပြုဘဲ အသုံးပြုသည့် ရည်ညွှန်းစာကြည့်တိုက်များဖြစ်သည်။ အမျိုးအစားအမည်ကို စတုရန်းကွင်းစကွက်များတွင် ထည့်သွင်းကာ ပကတိအားဖြင့် အငြိမ်အတန်းကို ကိုးကားနိုင်သည်။ ဤကိစ္စတွင်၊ Get-Member ကို အသုံးပြု၍ အရာဝတ္ထုတည်ဆောက်ပုံကို ကြည့်လျှင် System.Environment အစား System.RuntimeType အမျိုးအစားကို တွေ့ရမည်ဖြစ်ပါသည်။

[System.Environment] | Get-Member

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

Static အဖွဲ့ဝင်များကိုသာကြည့်ရှုရန် -Static parameter ဖြင့် Get-Member ကိုခေါ်ဆိုပါ (အရာဝတ္ထုအမျိုးအစားကို သတိပြုပါ)။

[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 ဖြင့် စတင်၍ အခြား syntax ကို ရနိုင်သည်-

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

တူညီသောနည်းလမ်းများထဲမှ ဒေတာကို သင်ဝင်ရောက်ကြည့်ရှုနိုင်သည်-

$object.Name

$object.'Name'

$value = 'Name'
$object.$value

ဤသည်မှာ ရှိပြီးသား hashtable တစ်ခုကို အရာဝတ္ထုတစ်ခုအဖြစ်သို့ ပြောင်းလဲခြင်း၏ ဥပမာတစ်ခုဖြစ်သည်။

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

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

ဤအရာဝတ္ထုအမျိုးအစား၏ အားနည်းချက်များထဲမှတစ်ခုမှာ ၎င်းတို့၏ ဂုဏ်သတ္တိများ အစီအစဥ် ပြောင်းလဲသွားခြင်းပင်ဖြစ်သည်။ ၎င်းကိုရှောင်ရှားရန်၊ သင်သည် [ordered] attribute ကိုအသုံးပြုရန်လိုအပ်သည်-

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

အရာဝတ္ထုတစ်ခုကို ဖန်တီးရန် အခြားရွေးချယ်စရာများ ရှိသည်- အထက်တွင် ကျွန်ုပ်တို့သည် cmdlet ကို အသုံးပြု၍ ကြည့်ရှုခဲ့သည်။ - Object ကို ရွေးပါ။. ကျန်တာအားလုံးက ဒြပ်စင်တွေကို ဘယ်လိုပေါင်းထည့် ဖယ်ရှားရမလဲဆိုတာ အဖြေရှာဖို့ပဲ ကျန်တော့တယ်။ ယခင်ဥပမာမှ အရာဝတ္ထုအတွက် ၎င်းကိုပြုလုပ်ရန် အလွန်လွယ်ကူသည်-

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

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

Add-Member cmdlet သည် "-MemberType ScriptMethod" construct ကိုအသုံးပြုခြင်းဖြင့် သင့်အား ဂုဏ်သတ္တိများသာမက ယခင်ဖန်တီးထားသော $object တစ်ခုသို့ နည်းလမ်းများကိုလည်း ထည့်သွင်းနိုင်စေသည်-

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

နည်းလမ်းအသစ်အတွက် ကုဒ်ကို သိမ်းဆည်းရန် ScriptBlock အမျိုးအစား၏ $ScriptBlock variable ကို အသုံးပြုခဲ့ကြောင်း သတိပြုပါ။

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

ဂုဏ်သတ္တိများကို ဖယ်ရှားရန် သင့်လျော်သောနည်းလမ်းကို အသုံးပြုပါ-

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

သင်၏ကိုယ်ပိုင်အတန်းများကိုဖန်တီးပါ။

PowerShell 5.0 သည် သတ်မှတ်ရန် စွမ်းရည်ကို မိတ်ဆက်ပေးခဲ့သည်။ အတန်း object-oriented programming languages ​​များအတွက် ပုံမှန် syntax ကို အသုံးပြုခြင်း။ ဤရည်ရွယ်ချက်အတွက်၊ ဝန်ဆောင်မှုစကားလုံး Class ကို ရည်ရွယ်ပြီး၊ ထို့နောက်တွင် အတန်းအမည်ကို သတ်မှတ်သင့်ပြီး ၎င်း၏ကိုယ်ထည်အား အော်ပရေတာကွင်းပိတ်များတွင် ဖော်ပြထားပါသည်။

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

၎င်းသည် တကယ့် .NET Core အမျိုးအစားဖြစ်ပြီး ၎င်း၏ကိုယ်ထည်က ၎င်း၏ ဂုဏ်သတ္တိများ၊ နည်းလမ်းများနှင့် အခြားဒြပ်စင်များကို ဖော်ပြပါသည်။ ရိုးရှင်းသော class ကို သတ်မှတ်ခြင်း၏ ဥပမာကို ကြည့်ကြပါစို့။

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

အရာဝတ္ထုတစ်ခုဖန်တီးရန် (class instance) ကို cmdlet ကိုအသုံးပြုသည်။ အသစ်-အရာဝတ္ထုသို့မဟုတ် [MyClass] နှင့် ပကတိအမျိုးအစားတစ်ခု pseudo-static နည်းလမ်း အသစ် (မူလတည်ဆောက်သူ):

$object = New-Object -TypeName MyClass

သို့မဟုတ်

$object = [MyClass]::new()

အရာဝတ္ထု၏ဖွဲ့စည်းပုံကိုခွဲခြမ်းစိတ်ဖြာကြပါစို့။

$object | Get-Member

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

နယ်ပယ်ကို မမေ့ပါနှင့်- အမျိုးအစားအမည်ကို စာကြောင်းအဖြစ် ကိုးကား၍မရပါ သို့မဟုတ် အတန်းအစား သတ်မှတ်ထားသည့် ဇာတ်ညွှန်း သို့မဟုတ် မော်ဂျူးအပြင်ဘက်တွင် စာသားအမျိုးအစားကို အသုံးပြု၍မရပါ။ သို့သော်၊ လုပ်ဆောင်ချက်များသည် module သို့မဟုတ် script ပြင်ပတွင်ဝင်ရောက်အသုံးပြုနိုင်မည့် class instances (objects) ကို ပြန်ပေးနိုင်ပါသည်။

အရာဝတ္ထုကို ဖန်တီးပြီးနောက် ၎င်း၏ ဂုဏ်သတ္တိများကို ဖြည့်ပါ-

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

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

အတန်းဖော်ပြချက်သည် ပိုင်ဆိုင်မှုအမျိုးအစားများသာမက ၎င်းတို့၏ ပုံသေတန်ဖိုးများကိုပါ ဖော်ပြကြောင်း သတိပြုပါ။

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

class method တစ်ခု၏ ဖော်ပြချက်သည် function တစ်ခု၏ ဖော်ပြချက်နှင့် ဆင်တူသော်လည်း function keyword ကို အသုံးမပြုဘဲ။ လုပ်ဆောင်ချက်တစ်ခုတွင် ပါရာမီတာများကို လိုအပ်ပါက နည်းလမ်းများသို့ ပေးပို့သည်-

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

ယခုကျွန်ုပ်တို့၏အတန်းကိုယ်စားလှယ်သည်ပြုံးနိုင်သည်-

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

နည်းလမ်းများသည် အလုပ်ပိုလုပ်နိုင်ပြီး အတန်းများလည်း ရှိနိုင်ပါသည်။ တည်ငြိမ်ဂုဏ်သတ္တိများနှင့်နည်းလမ်းများအမည်များသည် အတန်း၏အမည်နှင့် ကိုက်ညီသော တည်ဆောက်သူများလည်း ဖြစ်သည်။ script သို့မဟုတ် PowerShell module တွင် သတ်မှတ်ထားသော အတန်းသည် အခြားအတန်းအတွက် အခြေခံအဖြစ် လုပ်ဆောင်နိုင်သည် - ဤသည်မှာ အမွေဆက်ခံခြင်းကို အကောင်အထည်ဖော်ပုံဖြစ်သည်။ ဤကိစ္စတွင်၊ ရှိပြီးသား .NET အတန်းများကို အခြေခံအတန်းများအဖြစ် အသုံးပြုနိုင်သည်။

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

PowerShell တွင် အရာဝတ္ထုများနှင့် လုပ်ဆောင်ခြင်းဆိုင်ရာ ကျွန်ုပ်တို့၏ဖော်ပြချက်သည် ပြီးပြည့်စုံသည်ဟု မဆိုနိုင်ပါ။ အောက်ပါထုတ်ဝေမှုများတွင်၊ ကျွန်ုပ်တို့သည် ၎င်းအား လက်တွေ့ကျသောဥပမာများဖြင့် နက်ရှိုင်းအောင်ကြိုးစားပါမည်- စီးရီး၏ပဉ္စမမြောက်ဆောင်းပါးသည် PowerShell ကိုပြင်ပကုမ္ပဏီဆော့ဖ်ဝဲအစိတ်အပိုင်းများနှင့်ပေါင်းစပ်ခြင်းဆိုင်ရာကိစ္စရပ်များအတွက် ရည်ညွှန်းပါမည်။ ယခင်အပိုင်းများကို အောက်ပါလင့်ခ်များတွင် ကြည့်ရှုနိုင်ပါသည်။

အပိုင်း 1- Windows PowerShell ၏ အခြေခံအင်္ဂါရပ်များ
အပိုင်း 2- Windows PowerShell ပရိုဂရမ်းမင်းဘာသာစကားကို မိတ်ဆက်ခြင်း။
အပိုင်း 3- Scripts များနှင့် Functions များသို့ Parameters များကိုဖြတ်သန်းခြင်း၊ Cmdlets ဖန်တီးခြင်း။

Windows PowerShell ဆိုတာ ဘာလဲ၊ အဲဒါ ဘာအတွက် သုံးတာလဲ။ အပိုင်း 4- အရာဝတ္ထုများနှင့်အလုပ်လုပ်ခြင်း၊ ကိုယ်ပိုင်အတန်းများ

source: www.habr.com

မှတ်ချက် Add