ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

PowerShell-ում հրահանգների տեքստային ելքը միանշանակ միջոց է տեղեկատվության ներկայացման համար, որը հասկանալի է մարդուն։ Իրականում միջավայր ուղված է օբյեկտներով աշխատելուն՝ կոմանդլետները և գործառույթները ստանում են դրանք որպես մուտք և վերադարձնում են ելքով, իսկ ինտերակտիվ ռեժիմում և սցենարներում մատչելի փոփոխականների տեսակները հիմնված են .NET դասերի վրա։ Չորրորդ հոդվածում մենք առավել մանրամասն կքննարկենք օբյեկտների հետ աշխատանքը։

Ժամանակացույցը:

PowerShell-ում օբյեկտները
Օբյեկտների կառուցվածքի դիտում
Օբյեկտների ֆիլտրացում
Օբյեկտների դասակարգում
Օբյեկտների և դրանց մասերի առանձնացում
ForEach-Object, Group-Object և Measure-Object
Նոր օբյեկտների ստեղծում .NET և COM (New-Object)
Վիճակի մեթոդների վերզանգվածում
PSCusomObject-ի տեսակը
Մեր հիշեցումը՝ օբյեկտներն են տվյալների դաշտերի (գծերի, միջոցների և այլն) և դրանց մշակման ուղիների (մեթոդների) համընկնումը։ Նրա կառուցվածքը սահմանվում է տեսակով, որը հիմնականում հիմնված է օգտագործվող .NET Core միասնական պլատֆորմայի դասերի վրա։ Այնպես չէ, որ հնարավոր է աշխատել COM, CIM (WMI) և ADSI օբյեկտների հետ։ Գծերն ու մեթոդները անհրաժեշտ են տեղեկատվության հետ տարբեր գործողություններ կատարելու համար, ավելին, PowerShell-ում օբյեկտները կարելի է փոխանցել գործառույթների և կոմանդլետների արգումենտների ձևով, նրանց արժեքները կարող են վերագրավվել փոփոխականներին, ինչպես նաև գոյություն ունեն

PowerShell-ում օբյեկտները

հրամանների կոմպոզիցիայի մեխանիզմներ (կոնվեյեր կամ pipeline)։ Յուրաքանչյուր командա կոնվեյերում փոխանցում է իր ելքը հաջորդին հերթով՝ объект ըստ объекта։ Ձևավորման համար կարելի է օգտագործել հավաքված կոմանդլետներ կամ ստեղծել սեփական ընդլայնված գործառույթներ , որպեսզի կատարել տարբեր манипуляции օբյեկտների վրա կոնվեյերում՝ ֆիլտրում, դասակարգում, խմբավորում և նույնիսկ դրանց կառուցվածքը փոխելու: Տվյալների այս ձևով փոխանցումն ունի լուրջ առավելություն. ընդունող թիմին անհրաժեշտ չէ զբաղվել բիթերի (տեքստի) մակերևույթի վերլուծությամբ, ողջ անհրաժեշտ տեղեկատվությունը հեշտությամբ քաղվում է համապատասխան միջոցների և մեթոդների միջոցով։Օրինակ, մենք կգործարկենք Get-Process կոմանդլետը, որը թույլ է տալիս ստանալ տեղեկատվություն համակարգում աշխատող պրոցեսների մասին․

Օբյեկտների կառուցվածքի դիտում

Սա էկրանին կարտածի որոշ ձևավորված տեքստի տվյալներ, որոնք չեն արձանագրում վերադարձած օբյեկտների հատկությունները և դրանց մեթոդները։ Ելքի չնչին մակերեսային ուսումնասիրության համար անհրաժեշտ է սովորել հետազոտել օբյեկտների կառուցվածքը, և դրա համար օգնություն կտրամադրի Get-Member կոմանդլետը:

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Get-Process | Get-Member

Այս պահին արդեն տեսնում ենք տեսակն ու կառուցվածքը, և հավելյալ պարամետրերի օգնությամբ կարող ենք, օրինակ, առանձին ցուցադրել միայն մուտքագրված օբյեկտի գծերը։

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Get-Process | Get-Member -MemberType Property

Այս գիտելիքները անհրաժեշտ կլինեն ինտերակտիվ ռեժիմում և սեփական ստեղարանակերպերը գրելու համար։ Վ مثար, որպեսզի տեղեկություն ստանանք կախված պրոցեսների մասին Responding հատկությամբ։

Այս գիտելիքները անհրաժեշտ կլինեն ինտերակտիվ ռեժիմում վարչական խնդիրները լուծելու կամ սեփական սկրիպտեր գրելիս: օրինակ, ստանալու համար դադարեցված գործընթացների մասին տեղեկություններ `Responding` հատկության միջոցով:

Օբյեկտների ֆիլտրացում

PowerShell-ը թույլ է տալիս անցկացնել որոշակի պայմանները բավարարող օբյեկտներ խողովակի միջով:

Where-Object { սկրիպտի բլոկ }

Սկրիպտի բլոկի կատարման արդյունքում պետք է լինի տրամաբանական արժեք: Եթե այն ճիշտ է ($true), Where-Object կոնցոլային հրամանով բառը փոխանցվելու է շարունակություն, հակառակ դեպքում (արժեքը $false) այն կհանվի: Օրինակ, ցույց կտանք Windows Server-ի կանգնած ծառայությունների ցանկը, այսինքն, որոնք Status հատկության արժեքը "Stopped" է:

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

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Ա这里 մենք մեկ անգամ ևս տեսնում ենք տեքստային ներկայացում, սակայն ցանկության դեպքում հասկանալ անցնող օբյեկտների տիպը և ներքին կառուցվածքը հեշտ է:

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

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Օբյեկտների դասակարգում

Խողովակային մշակումների ժամանակ հաճախ անհրաժեշտ է նրանց դասակարգումը: Sort-Object հրամանով փոխանցվում են հատկությունների անունները (դասակարգման խուլ) և նա վերադարձնում է դասավորված օբյեկտներ: Ունեցված պրոցեսների ցուցակը հեշտությամբ կարելի է դասակարգել չորն ցանկապատում գնահատակազմ (cpu) ըստ ծախսված պրոցեսորի ժամանակի.

Get-Process | Sort-Object –Property cpu

Sort-Object հրամանով -Property պարամետրը ներկայացնելու համար պարտադիր չէ - այն օգտագործվում է ըստ կամ ունիվերսալ: Ավարտի դասակարգման համար կիրառվում է -Descending պարամետրը:

Get-Process | Sort-Object cpu -Descending

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Օբյեկտների և դրանց մասերի առանձնացում

Select-Object հրամանով կարելի է հտրոն ընդգծել խողովակի սկզբում կամ վերջում որոշակի քանակությամբ օբյեկտներ -First կամ -Last պարամետրերով: Այս պարամետրով կարելի է ընտրել յուրահատուկ օբյեկտներ կամ որոշակի հատկություններ, ինչպես նաև ստեղծել նոր օբյեկտներ դրանց հիման վրա: Նախանը պատասխանենք հրամանի օրինակով:

Հաջորդ հրամանը ցույց է տալիս 10 պրոցեսների տվյալները, որոնք առկա են հնարավոր առավելագույն RAM-ի (WS) արժեքով:

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

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Կարելի է միայն որոշակի հատկություններ ընդգծել ընթացող օբյեկտների և նորեր ստեղծել նրանց հիման վրա:

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

Դրա արդյունքում մենք կստանանք նոր օբյեկտ, որի կառուցվածքը տարբերվում է Get-Process հրամանով վերադարձվող կառուցվածքից: Ներառենք այս մասին Get-Member տեսելիս:

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

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Խնդրում ենք ուշադրություն դարձնել, որ Select-Object-ը վերադարձնում է հմուտ օբյեկտ (-First 1), որի միայն երկու ընվողովոր խիստ հատկություններ կան: Դրանք կանխորոշվել են առաջին օբյեկտից, որը տրամադրվել է խողովակով Get-Process հրամանով: Select-Object-ի օգտագործման վրա հիմնվում է PowerShell-ում օբյեկտների ստեղծման մի ճանապարհ:

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

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Select-Object-ի միջոցով հնարավոր է ավելացնել օբյեկտներին հաշվարկային հատկություններ, որոնք պետք է ներկայացվեն հաշու-ցե. Հարկավոր է, որ առաջին բանալիի արժեքը վերաբերի հատկության անվանը, իսկ երկրորդ բանալիի արժեքը՝ ընթացիկ խողովակի համար պատկանող հատկության արժեքին:

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

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Ամփոփենք կոնվեյերով անցնող օբյեկտների կառուցվածքը՝

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

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

ForEach-Object, Group-Object և Measure-Object

Օբյեկտների հետ աշխատելու համար կան նաև այլ կոմանդլետներ: Օրինակ, կխոսենք երեք առավել օգտակար մասին՝

ForEach-Object առաջարկում է իրականացնել PowerShell լեզվով կոդ յուրաքանչյուր օբյեկտի համար կոնվեյերում:

ForEach-Object { սցենարի բլոկ }

Group-Object գ grouped ը տվյալների հոսքը ըստ հատկության արժեքի:

Group-Object PropertyName

Եթե այն գործարկվի -NoElement պարամետրով, հնարավոր է պարզել խմբերի մեջ առկայսների քանակը:

Measure-Object հավաքում է տարբեր համառոտ տվյալներ դեպի օբյեկտների հոսքի հկայի խաղարկային արժեքների (հաշվում է գումարը, ինչպես նաև գտնում նվազել, ավելին կամ միջինը):

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

Սովորաբար, նկարագրված կոմանդլետները օգտագործվում են ինտերակտիվ ռեժիմում, մինչդեռ սցենարներում հաճախ ստեղծվում են ֆունկցիաներ Begin, Process և End բլոկներով:

Նոր օբյեկտների ստեղծում .NET և COM (New-Object)

Կա բազմաթիվ ծրագրային բաղադրիչներ .NET Core և COM ինտերֆեյսերով, որոնք օգտակար կլինեն համակարգային ադմինիստրատորներին: System.Diagnostics.EventLog դասի միջոցով հնարավոր է կառավարել համակարգային գրառումները անմիջապես Windows PowerShell-ից: Վերլուծենք այս դասի օրինակ՝ New-Object կոմանդլետով օգտագործելով -TypeName պարամետրը:

New-Object -TypeName System.Diagnostics.EventLog

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Քանի որ մենք չնշեցինք հատուկ իրադարձությունների գրանցում, ստացված դասի օրինակն չունի տվյալներ: Դա փոփոխելու համար, անհրաժեշտ է ստեղծելու ժամանակ օգտագործել հատուկ մեթոդ-կոնստրուկտորը -ArgumentList պարամետրով: Եթե ցանկանում ենք մուտք գործել ծրագրային գրանցումը, կոնստրուկտորին փոխանցեք "Application" շարքի որպես արգումենտ:

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

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Նշում տվեք. կոմանդի արդյունքները մենք պահեցինք $AppLog փոփոխականի մեջ: Մանրամասների ռեժիմում սովորաբար օգտագործվում են կոնվեյերները, բայց սցենարները հաճախ պահանջում են օբյեկտի հղումը պահպանել: Ավելին, հիմնական .NET Core դասերը գտնվում են System հիշողություններում: PowerShell-ը ըստ մշակող ընդունվող տեսակների որոնում է այստեղ, ուստի Diagnostics.EventLog գրելու փոխարեն System.Diagnostics.EventLog-ը լիովին ճիշտ է:

Գրանցման հետ աշխատանքի համար կարելի է պատվիրել համապատասխան մեթոդներին:

$AppLog | Get-Member -MemberType Method

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Կ ասենք, որ դա մաքրվում է Clear() մեթոդով, հասանելիության իրավունքների առկայության դեպքում:

$AppLog.Clear()

New-Object կոմանդլետը օգտագործվում է նաև COM բաղադրիչներով աշխատելու համար: Դրանք բավական շատ են՝ Windows սերվերի հետ տրամադրված գրադարաններից մինչև ActiveX ծրագրեր, օրինակ, Internet Explorer: 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-ի օգտագործումը շատ հին ու բարդ է թվում, այս հրամանը օգտագործվում է PowerShell-ի արտաքին ծրագրային բաղադրիչների հետ աշխատելու համար: Արդյունաբերության հետագայում այս հարցը կքննարկվի ավելի մանրամասն: Այսուհետ .NET և COM օբյեկտներից բացի մենք նույնպես կսովորենք CIM (WMI) և ADSI օբյեկտները:

Վիճակի մեթոդների վերզանգվածում

Որոշ .NET Core դասերի օրինակներ ստեղծել հնարավոր չի: Դրանց մեջ են մտնում System.Environment և System.Math: Նրանք ստատիկական և միայն ստատիկ հատկություններ և մեթոդներ են պարունակում: Ցուցաբերաբար, դրանք օգտակար գրապահարաններ են, որոնք օգտագործվում են օբյեկտներ ստեղծելու առանց: Ստատիկ դասին հղում տալու համար կարող եք օգտագործել գրականություն, աճպարարի անունը փակելով քառակուսի մեջ: Այս դեպքում, եթե դիտենք օբյեկտի կառուցվածքը Get-Member-ի միջոցով, մենք կտեսնենք System.RuntimeType տեսակը՝ ոչ System.Environment:

[System.Environment] | Get-Member

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Միայն ստատիկ տարրերը դիտելու համար հարկավոր է կանչել Get-Member `-Static` պարամետրով (ակնկալեք օբյեկտի տեսակը):

[System.Environment] | Get-Member -Static

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Ստատիկ հատկություններին և մեթոդներին մուտք ունենալու համար օգտագործվում են երկու զուգահեռ կոլոններ, որոնք տեղադրված են կետից հետո:

[System.Environment]::OSVersion

Կամ

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

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

PSCusomObject-ի տեսակը

PowerShell-ում առկա շատ տվյալների տիպերի մեջ առանձնահատուկ է PSCustomObject-ը, որը նախատեսված է պատահական կառուցվածքի օբյեկտներ պահելու համար: Նման օբյեկտ ստեղծելու մեթոդը New-Object հրամանի միջոցով համարվում է դասական, սակայն դժվար ու վաղանցիկ՝

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

Եկեք տեսնենք օբյեկտի կառուցվածքը:

$object | Get-Member

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

PowerShell 3.0-ից սկսած հասանելի է նաև այլ սինտակսիս:

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

Տվյալներին մուտք ունենալու համար կարող եք օգտագործել equivalents տարբերակներից մեկը:

$object.Name

$object.'Name'

$value = 'Name'
$object.$value

Եկեք տեսնենք արդյունքների օրինակ՝ գոյություն ունեցող հեշ-ճարտարի օբյեկտը փոխելու համար:

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

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Այս տիպի օբյեկտների թերություններից մեկը՝ դրանց հատկությունների կարգը կարող է փոխվել: Այս երևույթից խուսափելու համար հարկավոր է օգտագործել [ordered] ատրիբուտը:

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

Կա նաև այլ օբյեկտ ստեղծելու տարբերակներ: վերևում մենք ձեռք բերեցինք Select-Object հրամանի օգտագործումը: . Հրապարակման և հեռացման հարցերը պարզ դարձնելու համար, օգտագործողի նախորդ օրինակն արվում է բավականին հեշտ:$object | Add-Member –MemberType NoteProperty –Name Age –Value 33 $object | Get-Member

Add-Member հրամանը թույլ է տալիս ավելացնել նախկինում ստեղծված $object օբյեկտին ոչ միայն ավելություններ, այլև մեթոդներ՝ իհարկե "-MemberType ScriptMethod" կոնստրուկցիայի միջոցով:

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Add-Member հրամանը թույլ է տալիս ավելացնել ավելի առաջ ստեղծված $object օբյեկտին ոչ միայն հատկություններ, այլև մեթոդներ "-MemberType ScriptMethod" կոնստրուկցիայի միջոցով:

$ScriptBlock = {
    # կոդ 
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member

Հիշեցնենք, որ նոր մեթոդի կոդը պահպանելու համար օգտագործեցինք $ScriptBlock փոփոխությունը типа ScriptBlock:

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Ապրանքը հեռացնելու համար օգտագործվում է համապատասխան մեթոդը:

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

Մեր հիշեցումը՝ օբյեկտներն են տվյալների դաշտերի (գծերի, միջոցների և այլն) և դրանց մշակման ուղիների (մեթոդների) համընկնումը։ Նրա կառուցվածքը սահմանվում է տեսակով, որը հիմնականում հիմնված է օգտագործվող .NET Core միասնական պլատֆորմայի դասերի վրա։ Այնպես չէ, որ հնարավոր է աշխատել COM, CIM (WMI) և ADSI օբյեկտների հետ։ Գծերն ու մեթոդները անհրաժեշտ են տեղեկատվության հետ տարբեր գործողություններ կատարելու համար, ավելին, PowerShell-ում օբյեկտները կարելի է փոխանցել գործառույթների և կոմանդլետների արգումենտների ձևով, նրանց արժեքները կարող են վերագրավվել փոփոխականներին, ինչպես նաև գոյություն ունեն

PowerShell 5.0-ում հնարավոր է դարձել սահմանել կլասներ օբեկտ-օրենտացված ծրագրավորման լեզուներին բնորոշ սինտեքսով: Դրա համար նախատեսված է ծառայողական խոսքը Class, որի հետևում նշվում է կլասի անունը և դրա մարմինը նկարագրվում է գործառնական括ումներում:

class MyClass
{
    # կլասի մարմինը
}

Այսպիսով, սա իրական .NET Core տիպ է, որի մարմնում նկարագրվում են նրա հատկությունները, մեթոդները և այլ տարրբեր: Հրաժեշտ է պարզել պարզագույն կլասի սահմանման օրինակը:

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

Օբյեկտ (կլասի օրինակ) ստեղծելու համար օգտագործվում է commandlet New-Object, կամ [MyClass] լիտերալը և ֆորմալ մեթոդը new (տարբերակիչ կառուցել):

$object = New-Object -TypeName MyClass

կամ

$object = [MyClass]::new()

Վերլուծենք օբյեկտի կառուցվածքը:

$object | Get-Member

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Միասնական չմոռանալ տեսադաշտի մասին: Չենք կարող հղել տիպի անունը որպես տող կամ օգտագործել տիպի լիտերալը դասընթացից կամ մոդուլից դուրս, որտեղ սահմանվել է կլասը: Այդ դեպքում ֆունկցիաները կարող են վերադարձնել կլասի օրինակները (օբյեկտները), որոնք հասանելի կլինեն մոդուլի կամ դասընթացի դուրս:

Օբյեկտը ստեղծելուց հետո լրացնենք նրա հատկությունները:

$object.Name = 'Իվան Դանքո'
$object.City = 'Մոսկվա'
$object.Country = 'Ռուսաստան'
$object

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Կնշենք, որ կլասի նկարագրության մեջ սահմանվում են ոչ միայն հատկությունների տիպերը, այլ նաև նրանց արդեն գոյություն ունեցող արժեքները:

class Example
{
     [string]$Name = 'ճանապարհի Ջոն'
}

Կլասի մեթոդի նկարագրությունը նման է ֆունկցիայի նկարագրությանը, բայց առանց function ծառայողական խոսքի օգտագործման: Ինչպես ֆունկցիայի պարագայում, հարկ եղած դեպքում մեթոդներին փոխանցվում են պարամետրեր:

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: Windows PowerShell-ի հիմնական հնարավորությունները
Այդ մաս 2: Windows PowerShell ծրագրավորման լեզվին ծանոթացում
Այդ մաս 3: Ամբողջական վիճակագրական տվյալների փոխանցում սկրիպտներում և ֆունկցիաներում, կոմանդլեթների ստեղծում

ՈւINDOWS POWERHEL և ինչո՞վ է այն կերակրվում։ Հայտարարություն 4։ Նյութերի հետ աշխատելու

Ընտանիք: habr.com

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster