ዊንዶውስ ፓወር ሼል ምንድን ነው እና ለምን ጥቅም ላይ ይውላል? ክፍል 4: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ለምን ጥቅም ላይ ይውላል? ክፍል 4: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

በPowerShell አስተርጓሚ መስኮት ውስጥ ያለው የትእዛዞች የጽሑፍ ውፅዓት መረጃን ለሰው ልጅ እይታ ተስማሚ በሆነ መልኩ የሚያሳዩበት መንገድ ብቻ ነው። በእውነቱ እሮብ ተኮር ከእቃዎች ጋር ለመስራት: cmdlets እና ተግባራት እንደ ግብአት ይቀበላሉ እና መውጫው ላይ ተመለሰ፣ እና በይነተገናኝ እና በስክሪፕት ውስጥ የሚገኙት ተለዋዋጭ ዓይነቶች በ NET ክፍሎች ላይ የተመሰረቱ ናቸው። በአራተኛው ተከታታይ ርዕስ ውስጥ ከእቃዎች ጋር መሥራትን በበለጠ ዝርዝር እናጠናለን.

ማስታወሻ፡

በPowerShell ውስጥ ያሉ ነገሮች
የነገሮችን መዋቅር መመልከት
ዕቃዎችን ማጣራት
ዕቃዎችን መደርደር
ዕቃዎችን እና ክፍሎቻቸውን መምረጥ
ለእያንዳንዱ-ነገር, ቡድን-ነገር እና መለኪያ-ነገር
NET እና COM ዕቃዎችን መፍጠር (አዲስ-ነገር)
የማይለዋወጥ ዘዴዎችን መጥራት
PSUStomObject ይተይቡ
የራስዎን ክፍሎች መፍጠር

በPowerShell ውስጥ ያሉ ነገሮች

አንድ ነገር የውሂብ መስኮች (ንብረቶች, ክስተቶች, ወዘተ) እና እነሱን ለማስኬድ ዘዴዎች (ዘዴዎች) ስብስብ መሆኑን እናስታውስ. አወቃቀሩ በአይነት ይገለጻል፣ እሱም አብዛኛውን ጊዜ በተዋሃደ .NET Core መድረክ ላይ በሚገለገሉ ክፍሎች ላይ የተመሰረተ ነው። እንዲሁም ከ COM, CIM (WMI) እና ADSI ነገሮች ጋር መስራት ይቻላል. በመረጃ ላይ የተለያዩ እርምጃዎችን ለማከናወን ባህሪዎች እና ዘዴዎች ያስፈልጋሉ ፣ በተጨማሪም ፣ በPowerShell ውስጥ ፣ ነገሮች ወደ ተግባራት እና cmdlets እንደ ክርክር ሊተላለፉ ይችላሉ ፣ እሴቶቻቸውን ለተለዋዋጮች ይመደባሉ ፣ እና እንዲሁ አለ የትዕዛዝ ቅንብር ዘዴ (ተጓጓዥ ወይም ቧንቧ). በቧንቧው ውስጥ ያለው እያንዳንዱ ትዕዛዝ ውጤቱን በተራው ወደሚቀጥለው አንድ ነገር ያስተላልፋል። ለሂደቱ, የተጠናቀሩ cmdlets መጠቀም ወይም የራስዎን መፍጠር ይችላሉ የላቁ ባህሪያትበቧንቧው ውስጥ ካሉ ዕቃዎች ጋር የተለያዩ ማጭበርበሮችን ለማከናወን-ማጣራት ፣ መደርደር ፣ መቧደን እና መዋቅሮቻቸውን እንኳን መለወጥ ። በዚህ ቅጽ ውስጥ መረጃን ማስተላለፍ ትልቅ ጠቀሜታ አለው-ተቀባዩ ቡድን የባይት ዥረት (ጽሑፍ) መተንተን አያስፈልገውም, ሁሉም አስፈላጊ መረጃዎች ተገቢውን ንብረቶች እና ዘዴዎች በመደወል በቀላሉ ያገኛሉ.

የነገሮችን መዋቅር መመልከት

ለምሳሌ በሲስተሙ ውስጥ ስለሚሰሩ ሂደቶች መረጃ እንዲያገኙ የሚያስችልዎትን Get-Process cmdlet እናሂዱ፡-

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ለምን ጥቅም ላይ ይውላል? ክፍል 4: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

ስለተመለሱት ነገሮች ባህሪያት እና ስለ ዘዴዎቻቸው ምንም አይነት ሀሳብ የማይሰጥ አንዳንድ የተቀረጸ የጽሁፍ ውሂብ ያሳያል። ውጤቱን ለማስተካከል የነገሮችን አወቃቀር እንዴት መመርመር እንዳለብን መማር አለብን ፣ እና Get-Member cmdlet በዚህ ላይ ይረዳናል-

Get-Process | Get-Member

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ለምን ጥቅም ላይ ይውላል? ክፍል 4: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

እዚህ ቀድሞውኑ ዓይነት እና አወቃቀሩን አይተናል ፣ እና ተጨማሪ መለኪያዎችን በመጠቀም ፣ ለምሳሌ ፣ በግቤት ውስጥ የተካተተውን የንብረቱን ባህሪ ብቻ ማሳየት እንችላለን-

Get-Process | Get-Member -MemberType Property

ይህ እውቀት የአስተዳደር ችግሮችን በይነተገናኝ ለመፍታት ወይም የራስዎን ስክሪፕቶች ለመፃፍ ያስፈልጋል፡ ለምሳሌ ምላሽ ሰጪ ንብረትን በመጠቀም ስለተሰቀሉ ሂደቶች መረጃ ለማግኘት።

ዕቃዎችን ማጣራት

PowerShell አንድን ቅድመ ሁኔታ የሚያሟሉ ነገሮች በቧንቧ እንዲተላለፉ ይፈቅዳል፡-

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

በቅንፍ ውስጥ የስክሪፕት እገዳን የማስፈጸም ውጤት የቦሊያን እሴት መሆን አለበት። እውነት (እውነት ከሆነ) ወደ የት-ነገር cmdlet ግቤት ያለው ነገር በቧንቧ መስመር ላይ ይተላለፋል፣ አለበለዚያ (ሐሰት) ይሰረዛል። ለምሳሌ፣ የቆሙትን የዊንዶውስ አገልጋይ አገልግሎቶችን ዝርዝር እናሳይ። ንብረታቸው ወደ “ቆመ” የተቀናበረው፡-

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

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ለምን ጥቅም ላይ ይውላል? ክፍል 4: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

እዚህ እንደገና የጽሑፍ ውክልና እናያለን, ነገር ግን በቧንቧው ውስጥ የሚያልፉትን ነገሮች አይነት እና ውስጣዊ መዋቅር ለመረዳት ከፈለጉ አስቸጋሪ አይደለም.

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

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ለምን ጥቅም ላይ ይውላል? ክፍል 4: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

ዕቃዎችን መደርደር

የቧንቧ መስመር ዕቃዎችን በሚሠሩበት ጊዜ ብዙውን ጊዜ እነሱን መደርደር ያስፈልጋል. ደርድር-ነገር cmdlet የንብረቶች ስሞች ተላልፏል (የመደርደር ቁልፎች) እና በእሴታቸው የታዘዙ ዕቃዎችን ይመልሳል። የሂደቱን ውጤት በሲፒዩ ጊዜ ባጠፋው (ሲፒዩ ንብረት) መደርደር ቀላል ነው።

Get-Process | Sort-Object –Property cpu

የ-Property መለኪያ ወደ ደርድር-ነገር cmdlet ሲደውሉ መተው ይቻላል፤ በነባሪነት ጥቅም ላይ ይውላል። ለተገላቢጦሽ መደርደር፣ መውረድ መለኪያውን ይጠቀሙ፡-

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 ስክሪፕቶች ውስጥ ዕቃዎችን የመፍጠር መንገዶች አንዱ ምረጥ-ነገርን በመጠቀም ላይ የተመሠረተ ነው።

$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 አሉ። እንደ ምሳሌ፣ በጣም ጠቃሚ ስለሆኑት ሦስቱ እንነጋገር።

ለእያንዳንዱ-ነገር በቧንቧው ውስጥ ላለው እያንዳንዱ ነገር የ PowerShell ኮድ እንዲያሄዱ ይፈቅድልዎታል-

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

ቡድን-ነገር ቡድኖች በንብረት ዋጋ:

Group-Object PropertyName

በ -NoElement መለኪያ ካካሄዱት በቡድኖቹ ውስጥ ያሉትን የንጥረ ነገሮች ብዛት ማወቅ ይችላሉ.

መለኪያ-ነገር በቧንቧው ውስጥ ባሉ የነገር መስክ እሴቶች የተለያዩ ማጠቃለያ መለኪያዎችን ያጠቃለለ ( ድምሩን ያሰላል እና እንዲሁም ዝቅተኛውን ፣ ከፍተኛውን ወይም አማካይ እሴትን ያገኛል)

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

በተለምዶ፣ የተብራሩት cmdlets በይነተገናኝ ጥቅም ላይ ይውላሉ፣ እና ብዙ ጊዜ በስክሪፕቶች ውስጥ ይፈጠራሉ። ተግባራት በጀማሪ፣ ሂደት እና መጨረሻ ብሎኮች።

NET እና COM ዕቃዎችን መፍጠር (አዲስ-ነገር)

ለስርዓት አስተዳዳሪዎች ጠቃሚ የሆኑ ከ NET Core እና COM በይነገጽ ጋር ብዙ የሶፍትዌር ክፍሎች አሉ። የSystem.Diagnostics.EventLog ክፍልን በመጠቀም የስርዓት ምዝግብ ማስታወሻዎችን ከዊንዶውስ ፓወር ሼል በቀጥታ ማስተዳደር ይችላሉ። አዲሱን ነገር cmdlet ከ -TypeName መለኪያ ጋር በመጠቀም የዚህን ክፍል ምሳሌ የመፍጠር ምሳሌን እንመልከት፡-

New-Object -TypeName System.Diagnostics.EventLog

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ለምን ጥቅም ላይ ይውላል? ክፍል 4: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

የተወሰነ የክስተት ምዝግብ ማስታወሻ ስላልገለፅን የክፍሉ የውጤት ምሳሌ ምንም ውሂብ አልያዘም። ይህንን ለመለወጥ የ -ArgumentList መለኪያን በመጠቀም በሚፈጠርበት ጊዜ ልዩ የግንባታ ዘዴን መደወል ያስፈልግዎታል. የማመልከቻ ምዝግብ ማስታወሻውን መድረስ ከፈለግን “መተግበሪያ” የሚለውን ሕብረቁምፊ እንደ ክርክር ለገንቢው እናስተላልፋለን፡-

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

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ለምን ጥቅም ላይ ይውላል? ክፍል 4: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

እባክዎን የትዕዛዙን ውጤት በ$AppLog ተለዋዋጭ ውስጥ እንዳስቀመጥን ልብ ይበሉ። ምንም እንኳን የቧንቧ መስመሮች በተለምዶ በይነተገናኝ ሁነታ ጥቅም ላይ የሚውሉ ቢሆኑም, ስክሪፕቶችን መጻፍ ብዙውን ጊዜ የአንድን ነገር ማጣቀሻ መጠበቅን ይጠይቃል. በተጨማሪም የኮር .NET Core ክፍሎች በሲስተሙ የስም ቦታ ውስጥ ይገኛሉ፡ ፓወር ሼል በነባሪነት በውስጡ የተገለጹ አይነቶችን ይፈልጋል፣ ስለዚህ በSystem.Diagnostics.EventLog ምትክ Diagnostics.EventLog መፃፍ በጣም ትክክል ነው።

ከምዝግብ ማስታወሻው ጋር ለመስራት ተገቢውን ዘዴዎች መጠቀም ይችላሉ-

$AppLog | Get-Member -MemberType Method

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ለምን ጥቅም ላይ ይውላል? ክፍል 4: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

የመዳረሻ መብቶች ካሉ በ Clear() ዘዴ ጸድቷል እንበል፡-

$AppLog.Clear()

አዲሱ-ነገር cmdlet እንዲሁ ከ COM አካላት ጋር ለመስራት ጥቅም ላይ ይውላል። በጣም ብዙ ናቸው - ከዊንዶውስ ስክሪፕት አገልጋይ ጋር ከሚቀርቡት ቤተ-መጽሐፍት እስከ አክቲቭኤክስ አፕሊኬሽኖች ለምሳሌ ኢንተርኔት ኤክስፕሎረር። የ COM ነገርን ለመፍጠር የ ComObject መለኪያን ከሚፈለገው ክፍል ፕሮግራማዊ ፕሮጂአይድ ጋር ማዘጋጀት ያስፈልግዎታል፡-

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

የእራስዎን እቃዎች በዘፈቀደ መዋቅር ለመፍጠር አዲስ-ነገርን በመጠቀም በጣም ጥንታዊ እና አስቸጋሪ ይመስላል ፣ ይህ cmdlet ከፓወር ሼል ውጭ ካሉ የሶፍትዌር አካላት ጋር ለመስራት ያገለግላል። በሚቀጥሉት ጽሁፎች ይህ ጉዳይ በበለጠ ዝርዝር ይብራራል. ከ NET እና COM ነገሮች በተጨማሪ CIM (WMI) እና ADSI ነገሮችን እንቃኛለን።

የማይለዋወጥ ዘዴዎችን መጥራት

አንዳንድ የ .NET Core ክፍሎች ሲስተም.ኢንቫይሮንመንት እና ሲስተም. ማትን ጨምሮ በቅጽበት ሊደረጉ አይችሉም። ናቸው የማይንቀሳቀስ እና የማይንቀሳቀሱ ንብረቶችን እና ዘዴዎችን ብቻ ይዟል። እነዚህ በመሠረቱ ዕቃዎችን ሳይፈጥሩ ጥቅም ላይ የሚውሉ የማጣቀሻ ቤተ-መጻሕፍት ናቸው. የአይነቱን ስም በካሬ ቅንፎች ውስጥ በማያያዝ በጥሬው በኩል የማይንቀሳቀስ ክፍልን ማመላከት ይችላሉ። ነገር ግን የነገሩን አወቃቀሩ 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: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

PSUStomObject ይተይቡ

በPowerShell ውስጥ ከሚገኙት በርካታ የመረጃ አይነቶች መካከል፣ በዘፈቀደ መዋቅር ነገሮችን ለማከማቸት የተነደፈውን PSCustomObject መጥቀስ ተገቢ ነው። አዲስ-ነገር 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: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

የዚህ አይነት እቃዎች ከሚያስከትላቸው ጉዳቶች አንዱ የንብረታቸው ቅደም ተከተል ሊለወጥ ይችላል. ይህንን ለማስቀረት፣ [የታዘዘ] ባህሪን መጠቀም አለቦት፡-

$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 አይነት ScriptBlock ተጠቀምን።

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ለምን ጥቅም ላይ ይውላል? ክፍል 4: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

ንብረቶችን ለማስወገድ ተጓዳኝ ዘዴን ይጠቀሙ-

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

የራስዎን ክፍሎች መፍጠር

PowerShell 5.0 የመግለጽ ችሎታን አስተዋወቀ ትምህርቶች ነገር-ተኮር የፕሮግራም ቋንቋዎችን አገባብ ባህሪ በመጠቀም። ክፍል የሚለው የአገልግሎት ቃል የታሰበ ነው ፣ ከዚያ በኋላ የክፍሉን ስም መጥቀስ እና አካሉን በኦፕሬተር ቅንፎች ውስጥ መግለጽ አለብዎት-

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

ይህ እውነተኛ .NET Core አይነት ነው፣ ባህሪያቱን፣ ስልቶቹን እና ሌሎች አካላትን የሚገልጽ አካል ያለው። በጣም ቀላሉን ክፍል የመግለጫ ምሳሌ እንመልከት፡-

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)

ዘዴዎች ከመጠን በላይ መጫን ይችላሉ, በተጨማሪም, አንድ ክፍል አለው የማይንቀሳቀሱ ንብረቶች እና ዘዴዎች, እንዲሁም ስማቸው ከክፍሉ ስም ጋር የሚጣጣሙ ገንቢዎች. በስክሪፕት ወይም በPowerShell ሞጁል ውስጥ የተገለጸ ክፍል ለሌላው መሠረት ሆኖ ሊያገለግል ይችላል - ውርስ የሚተገበረው በዚህ መንገድ ነው። በዚህ አጋጣሚ ነባር .NET ክፍሎችን እንደ መሰረት አድርጎ እንዲጠቀም ተፈቅዶለታል፡-

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

በPowerShell ውስጥ ካሉ ነገሮች ጋር ስለመሥራት ያለን መግለጫ ብዙም አያልቅም። በሚቀጥሉት ህትመቶች ውስጥ በተግባራዊ ምሳሌዎች ጥልቅ ለማድረግ እንሞክራለን-በተከታታዩ ውስጥ አምስተኛው መጣጥፍ PowerShellን ከሶስተኛ ወገን የሶፍትዌር አካላት ጋር በማዋሃድ ጉዳዮች ላይ ያተኩራል ። ያለፉ ክፍሎች ከታች ባለው ማገናኛ ላይ ይገኛሉ።

ክፍል 1: መሰረታዊ የዊንዶውስ ፓወር ሼል ባህሪያት
ክፍል 2፡ የዊንዶውስ ፓወር ሼል ፕሮግራሚንግ ቋንቋ መግቢያ
ክፍል 3፡ ግቤቶችን ወደ ስክሪፕቶች እና ተግባራት ማለፍ፣ cmdlets መፍጠር

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ለምን ጥቅም ላይ ይውላል? ክፍል 4: ከዕቃዎች ጋር መሥራት, የራሱ ክፍሎች

ምንጭ: hab.com

አስተያየት ያክሉ