Mongolo o hlahisoang ke litaelo fensetereng ea toloko ea PowerShell ke mokhoa feela oa ho hlahisa tlhahisoleseling ka mokhoa o ka baloang ke motho. Ha e le hantle, tikoloho ho sebetsa ka dintho: cmdlets le ditshebetso di amohela e le ho kenya le , 'me mefuta e fapaneng e fumanehang ka kopanelo le mengolong e thehiloe ho litlelase tsa .NET. Sehloohong sa bone letotong, re tla hlahloba ho sebetsa le lintho ka botlalo.
Tafole ea likateng:
Lintho tse ho PowerShell
A re hopoleng hore ntho ke pokello ea libaka tsa data (thepa, liketsahalo, joalo-joalo) le mekhoa ea ho li sebetsa (mekhoa). Sebopeho sa eona se hlalosoa ke mofuta, oo hangata o itšetlehileng ka lihlopha tse sebelisoang sethaleng se kopaneng sa .NET Core. Hape hoa khoneha ho sebetsa ka lintho tsa COM, CIM (WMI), le ADSI. Thepa le mekhoa lia hlokahala ho etsa liketso tse fapaneng ho data, ho feta moo, ho PowerShell, lintho li ka fetisoa e le likhang ho mesebetsi le cmdlets, litekanyetso tsa bona li ka abeloa ho mefuta e fapaneng, hape ho na le. (peipi). Taelo e 'ngoe le e' ngoe e phaepheng e fetisetsa tlhahiso ea eona ho e latelang ka ho latellana, ntho ka ntho. U ka sebelisa cmdlets e hlophisitsoeng bakeng sa ho sebetsa kapa ho iketsetsa ea hau , ho etsa maqheka a fapaneng ka lintho tse ka har'a lipeipi: ho sefa, ho hlopha, ho arola ka lihlopha, esita le ho fetola sebopeho sa tsona. Ho fetisa lintlha ka foromo ena ho na le molemo o tebileng: sehlopha se amohelang ha se hloke ho fetisa molapo oa byte (mongolo), tlhahisoleseding eohle e hlokahalang e ntšoa habonolo ka ho fumana thepa le mekhoa e lumellanang.
Ho sheba sebopeho sa dintho
Mohlala, ha re tsamaise Get-Process cmdlet, e u lumellang ho fumana leseli mabapi le lits'ebetso tse sebetsang tsamaisong:

E tla hlahisa data e hlophisitsoeng ea mongolo skrineng, e sa faneng ka maikutlo a letho mabapi le thepa ea lintho tse khutlisitsoeng le mekhoa ea tsona. Ho hlophisa sephetho hantle, o hloka ho ithuta ho hlahloba sebopeho sa lintho, mme Get-Member cmdlet e tla re thusa ka sena:
Get-Process | Get-Member 
Mona re se re ntse re bona mofuta le sebopeho, 'me ka thuso ea li-parameter tse eketsehileng, mohlala, re ka bontša feela thepa ea ntho e kentsoeng:
Get-Process | Get-Member -MemberType PropertyTsebo ena e tla hlokahala ho rarolla mesebetsi ea tsamaiso ka mokhoa oa ho sebelisana kapa ho ngola mangolo a hau: mohlala, ho fumana tlhahisoleseding mabapi le mekhoa ea ho fanyeha ka ho sebelisa Thepa ea Karabo.
Ho tlhotla dintho
PowerShell e u lumella ho fetisa lintho ka liphaephe tse fihlelang boemo bo itseng:
Where-Object { блок сценария }Sephetho sa ho kenya tshebetsong boloko ba sengolwa ka hara masakaneng a opereishene e lokela ho ba boleng ba Boolean. Haeba e le nnete ($true), ntho e fetiseditsweng ho cmdlet ya Where-Object e tla fetisetswa ka hara phaephe; ho seng jwalo (boleng ba $false), bo tla hlakolwa. Mohlala, ha re bontsheng lethathamo la ditshebeletso tse emisitsweng. Windows Server, ke hore bao thepa ea bona ea Boemo e nang le boleng ba "Emisitsoe":
Get-Service | Where-Object {$_.Status -eq "Stopped"} 
Mona re bona setšoantšo sa mongolo hape, empa haeba u batla ho utloisisa mofuta le sebopeho sa ka hare sa lintho tse fetang ka pipeline, ha ho thata:
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member 
Ho hlopha dintho
Ha ho sebetsa lintho ka pipeline, hangata hoa hlokahala ho li hlophisa. The Sort-Object cmdlet e amohela mabitso a thepa (linotlolo tsa mofuta), 'me e khutlisa lintho tse hlophisitsoeng ka boleng ba tsona. Sephetho sa lits'ebetso tse sebetsang se ka hlophisoa habonolo ke nako ea processor e sebelisitsoeng (thepa ea cpu):
Get-Process | Sort-Object –Property cpuThe -Property parameter e ka siuoa ha u bitsa Sort-Object cmdlet; e sebelisoa ka mokhoa oa kamehla. Bakeng sa ho hlophisa ka morao, ho sebelisoa parameter ea -Descending:
Get-Process | Sort-Object cpu -Descending 
Ho khetha lintho le likarolo tsa tsona
The Select-Object cmdlet e u lumella ho khetha palo e itseng ea lintho qalong kapa qetellong ea pipeline u sebelisa -First kapa -Last parameters. E ka sebelisoa ho khetha lintho ka bomong kapa thepa e itseng, le ho theha lintho tse ncha tse thehiloeng ho tsona. Ha re shebeng hore na cmdlet e sebetsa joang ho sebelisa mehlala e bonolo.
Taelo e latelang e bonts'a tlhahisoleseling mabapi le lits'ebetso tse 10 tse jang boholo ba RAM (thepa ea WS):
Get-Process | Sort-Object WS -Descending | Select-Object -First 10 
Hoa khoneha ho khetha thepa e itseng feela ea lintho tse fetang ka har'a conveyor le ho theha tse ncha tse thehiloeng ho tsona:
Get-Process | Select-Object ProcessName, Id -First 1Ka lebaka la pipeline, re tla fumana ntho e ncha, e leng sebopeho sa eona se tla fapana le sebopeho se khutliselitsoeng ke Get-Process cmdlet. Ha re netefatse sena re sebelisa Get-Member:
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member 
Hlokomela hore Select-Object e khutlisa ntho e le 'ngoe (-First 1), e nang le likarolo tse peli feela tseo re li boletseng: litekanyetso tsa tsona li kopitsoe ho tloha nthong ea pele e fetiselitsoeng ho pipeline ke Get-Process cmdlet. Ho sebelisa Select-Object ke tsela e 'ngoe ea ho etsa lintho ka har'a lingoloa tsa PowerShell:
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType() 
Ka ho sebelisa Select-Object, u ka eketsa thepa e bakiloeng ho lintho tseo u batlang ho li emela . Tabeng ena, boleng ba senotlolo sa eona sa pele bo lumellana le lebitso la thepa, 'me boleng ba senotlolo sa bobeli bo lumellana le boleng ba thepa bakeng sa karolo ea hona joale ea pipeline:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} 
Ha re shebeng sebopeho sa lintho tse fetang har'a conveyor:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member 
ForEach-Object, Group-Object le Measure-Object
Ho na le li-cmdlets tse ling tsa ho sebetsa ka lintho. Ka mohlala, re tla u bolella ka tse tharo tsa tse molemo ka ho fetisisa:
Ntho e 'ngoe le e 'ngoe e o lumella ho etsa khoutu ea PowerShell bakeng sa ntho e 'ngoe le e' ngoe e pompong:
ForEach-Object { блок сценария }Sehlopha-Sepheo lihlopha tsa lintho ka boleng ba thepa:
Group-Object PropertyNameHaeba u e tsamaisa ka -NoElement parameter, u ka fumana palo ea likarolo lihlopheng.
Lekanya-Ntho e bokella liparamente tse fapaneng tsa kakaretso ka boleng ba masimo a lintho tse pompong (e bala kakaretso, hape e fumana bonyane, boholo, kapa boleng bo tloaelehileng):
Measure-Object -Property PropertyName -Minimum -Maximum -Average -SumKa tloaelo, li-cmdlets tseo ho buisanoeng ka tsona li sebelisoa ka mokhoa oa ho sebelisana, 'me hangata li bōptjoa ka mangolo ka li-blocks tsa Qala, Ts'ebetso le Qetella.
Ho theha lintho tsa .NET le COM (Ntho-Ncha)
Ho na le likarolo tse ngata tsa software tse nang le li-interface tsa .NET Core le COM tse thusang batsamaisi ba sistimi. U sebelisa sehlopha sa System.Diagnostics.EventLog, u ka laola li-log tsa sistimi ka kotloloho ho tsoa ho Windows PowerShell. A re shebeng mohlala oa ho theha mohlala oa sehlopha sena re sebelisa cmdlet ea New-Object ka paramethara ea -TypeName:
New-Object -TypeName System.Diagnostics.EventLog 
Kaha ha rea ka ra hlakisa tlaleho e itseng ea ketsahalo, mohlala oa sephetho ha o na data. Ho fetola sena, re hloka ho bitsa mokhoa o khethehileng oa sehahi nakong ea popo ea ona re sebelisa parameter -ArgumentList. Haeba re batla ho fihlella lenane la kopo, re lokela ho fetisa khoele "Kopo" e le khang ho moetsi:
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog 
Hlokomela hore re bolokile tlhahiso ea taelo ho $AppLog e fapaneng. Le hoja lipeipi li atisa ho sebelisoa ka mokhoa oa ho sebelisana, ho ngola hangata ho hloka ho boloka tšupiso ea ntho. Ho feta moo, litlelase tsa mantlha tsa .NET Core li fumaneha sebakeng sa mabitso sa Sistimi: PowerShell e batla mefuta ena moo ka mokhoa o ikhethileng, kahoo ho ngola Diagnostics.EventLog sebakeng sa System.Diagnostics.EventLog e nepahetse.
Ho sebetsa le log, o ka sebelisa mekhoa e lumellanang:
$AppLog | Get-Member -MemberType Method 
Ha re re e hlakotsoe ka mokhoa o hlakileng () haeba litokelo tsa phihlello li le teng:
$AppLog.Clear()Cmdlet ea New-Object e boetse e sebelisoa ho sebetsa le likarolo tsa COM. Ho na le tse 'maloa tsa tsona, ho tsoa ho li-script tse fanoeng le seva. Windows dilaeborari ho ya ho ditshebediso tsa ActiveX, jwalo ka Internet Explorer. Ho theha ntho ya COM, o hloka ho totobatsa paramethara ya -ComObject ka ProgId ya sehlopha seo o se batlang:
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObjectHo iketsetsa lintho tsa hau ka sebopeho se se nang boikemelo, ho sebelisa New-Object ho bonahala e le ntho ea khale ebile e le boima; cmdlet ena e sebelisoa ho sebetsa le likarolo tsa software tsa kantle mabapi le PowerShell. Lihloohong tse latelang, ho tla tšohloa taba ena ka ho qaqileng haholoanyane. Ntle le lintho tsa .NET le COM, re tla boela re ithute lintho tsa CIM (WMI) le ADSI.
Ho letsetsa mekhoa e tsitsitseng
Ho na le lihlopha tse ling tsa .NET Core tse ke keng tsa tiisoa, ho kenyeletsa System.Environment le System.Math. Ke 'me e na le litšobotsi le mekhoa e tsitsitseng feela. Ha e le hantle, tsena ke lilaebrari tsa litšupiso tse sebelisoang ntle le ho theha lintho. U ka bua ka sehlopha sa static ka lentsoe le tobileng, le kenyelletsang lebitso la mofuta ka masakaneng a lisekoere. Tabeng ena, haeba u sheba sebopeho sa ntho u sebelisa Get-Member, re tla bona mofuta oa System.RuntimeType sebakeng sa System.Tikoloho:
[System.Environment] | Get-Member 
Ho sheba litho tse emeng feela, letsetsa Get-Member ka -Static parameter (hlokomela mofuta oa ntho):
[System.Environment] | Get-Member -Static 
Ho fihlella thepa le mekhoa e tsitsitseng, sebelisa li-colon tse peli tse latellanang ho e-na le nako ka mor'a ea sebele:
[System.Environment]::OSVersionKapa
$test=[System.Math]::Sqrt(25)
$test
$test.GetType() 
Mofuta oa PSCustomObject
Har'a mefuta e mengata ea data e fumanehang ho PowerShell, ho bohlokoa ho bua ka PSCustomObject, e etselitsoeng ho boloka lintho tse nang le sebopeho se sa reroang. Ho theha ntho e joalo ho sebelisa New-Object cmdlet ho nkoa e le mokhoa oa khale, empa o boima ebile o siiloe ke nako:
$object = New-Object –TypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
Ha re shebeng sebopeho sa ntho:
$object | Get-Member 
Ho qala ka PowerShell 3.0, syntax e 'ngoe ea fumaneha:
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
U ka fumana data ka e 'ngoe ea litsela tse tšoanang:
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
Mohlala ke ona oa ho fetolela hashtable e teng nthong:
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()

E 'ngoe ea mathata a mofuta ona oa lintho ke hore tatellano ea thepa ea bona e ka fetoha. Ho qoba sena, o hloka ho sebelisa tšobotsi [e laetsoeng]:
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Ho na le likhetho tse ling tsa ho theha ntho: ka holimo re shebile ho sebelisa cmdlet . Ho setseng ke ho tseba ho eketsa le ho tlosa likarolo. Ho bonolo haholo ho etsa sena bakeng sa ntho e tsoang mohlaleng o fetileng:
$object | Add-Member –MemberType NoteProperty –Name Age –Value 33
$object | Get-Member

The Add- Member cmdlet e u lumella hore u se ke ua eketsa thepa feela empa hape le mekhoa ho ntho ea $ e entsoeng pele ka ho sebelisa "-MemberType ScriptMethod" ea ho haha:
$ScriptBlock = {
# код
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
Hlokomela hore re sebelisitse mofuta oa $ScriptBlock oa mofuta oa ScriptBlock ho boloka khoutu ea mokhoa o mocha.

Ho tlosa thepa, sebelisa mokhoa o nepahetseng:
$object.psobject.properties.remove('Name')
Ho iketsetsa litlelase tsa hau
PowerShell 5.0 e hlahisitse bokhoni ba ho hlalosa ho sebelisa syntax e tloahelehileng bakeng sa lipuo tse etselitsoeng lintho tse itseng. Bakeng sa morero ona, lentsoe la ts'ebeletso Class le reretsoe, ka mor'a moo lebitso la sehlopha le tlameha ho hlalosoa 'me 'mele oa eona o hlalosoe ka masakaneng a opareitara:
class MyClass
{
# тело класса
}
Ena ke mofuta oa 'nete oa NET Core, oo' mele oa oona o hlalosang thepa ea oona, mekhoa le likarolo tse ling. Ha re shebeng mohlala oa ho hlalosa sehlopha se bonolo:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
Ho theha ntho (mohlala oa sehlopha), cmdlet e sebelisoa. , kapa mofuta oa sebele [MyClass] le e ncha (sehahi sa kamehla):
$object = New-Object -TypeName MyClasskapa
$object = [MyClass]::new()Ha re hlahlobeng sebopeho sa ntho:
$object | Get-Member 
Se ke oa lebala ka scope: u ke ke ua supa lebitso la mofuta joalo ka khoele kapa ua sebelisa mofuta o itseng kantle ho mongolo kapa mojule oo sehlopha se hlalosoang ho ona. Leha ho le joalo, mesebetsi e ka khutlisa maemo a sehlopha (lintho) tse tla fumaneha kantle ho mojule kapa script.
Kamora ho theha ntho, tlatsa thepa ea eona:
$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object

Hlokomela hore tlhaloso ea sehlopha ha e bolele feela mefuta ea thepa, empa hape le boleng ba eona ba kamehla:
class Example
{
[string]$Name = 'John Doe'
}
Tlhaloso ea mokhoa oa sehlopha e tšoana le tlhaloso ea mosebetsi, empa ntle le lentsoe la sehlooho la mosebetsi. Joalo ka ts'ebetsong, liparamente li fetisetsoa mekhoeng haeba ho hlokahala:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
#описание метода
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
Joale moemeli oa sehlopha sa rona a ka bososela:
$object = [MyClass]::new()
$object.Smile($true)
Mekhoa e ka imeloa, 'me sehlopha se ka ba le , hammoho le bahahi bao mabitso a bona a lumellanang le lebitso la sehlopha ka boeona. Sehlopha se hlalositsoeng ka har'a script kapa module ea PowerShell e ka sebetsa e le motheo oa sehlopha se seng - ke kamoo lefa le kenngoa ts'ebetsong. Tabeng ena, lihlopha tse teng tsa .NET li ka sebelisoa e le lihlopha tsa motheo:
class MyClass2 : MyClass
{
#тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)
Tlhaloso ea rona ea ho sebetsa ka lintho ho PowerShell e ke ke ea bitsoa e felletseng. Likhatisong tse latelang, re tla leka ho e tebisa ka mehlala e sebetsang: sengoloa sa bohlano sa letoto se tla neheloa litabeng tsa ho kopanya PowerShell le likarolo tsa software tsa mokha oa boraro. Likarolo tse fetileng li ka fumanoa lihokelong tse ka tlase.
Source: www.habr.com
