Mongolo o hlahisoang ke litaelo fensetereng ea mofetoleli oa PowerShell ke mokhoa feela oa ho hlahisa tlhahisoleseling ka mokhoa o loketseng maikutlo a batho. Hantle-ntle Laboraro
Tafole ea likateng:
Lintho tse ho PowerShell
A re hopoleng hore ntho ke pokello ea masimo a 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, tsa abeloa boleng ba tsona ho mefuta-futa, hape ho na le.
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 lintlha tse ling tse hlophisitsoeng tse sa faneng ka maikutlo mabapi le thepa ea lintho tse khutlisitsoeng le mekhoa ea tsona. Ho lokisa sephetho hantle, re 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, ka mohlala, re ka bontša feela thepa ea ntho e kenyelelitsoeng ho kenya letsoho:
Get-Process | Get-Member -MemberType Property
Tsebo ena e tla hlokahala ho rarolla mathata a tsamaiso ka kopanelo kapa ho ngola lingoliloeng tsa hau: mohlala, ho fumana leseli mabapi le lits'ebetso tsa ho fanyeha ka ho sebelisa Thepa e Arabang.
Ho tlhotla dintho
PowerShell e lumella lintho tse fihlelang boemo bo itseng hore li fetisetsoe ka liphaephe:
Where-Object { блок сценария }
Sephetho sa ho sebelisa boloko ba mongolo ka har'a masakaneng e tlameha ho ba boleng ba boolean. Haeba e le 'nete ($'nete), ntho e kenyellelitsoeng ho Where-Object cmdlet e tla fetisoa ka pipeline, ho seng joalo ($false) e tla hlakoloa. Ka mohlala, ha re bonts'a lenane la litšebeletso tse emisitsoeng tsa Windows Server, ke hore. bao thepa ea bona ea Boemo e behiloeng ho "Stoped":
Get-Service | Where-Object {$_.Status -eq "Stopped"}
Mona hape re bona setšoantšo sa mongolo, 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 etsoa lipeipi tsa lintho, hangata ho na le tlhokahalo ea ho li hlophisa. The Sort-Object cmdlet e fetisetsoa mabitso a thepa (linotlolo tsa ho hlopha) le ho khutlisa lintho tse laetsoeng ke boleng ba tsona. Ho bonolo ho hlophisa tlhahiso ea lits'ebetso ka nako ea CPU e sebelisitsoeng (thepa ea cpu):
Get-Process | Sort-Object –Property cpu
The -Property parameter e ka siuoa ha u bitsa Sort-Object cmdlet; e sebelisoa ka ho sa feleng. Bakeng sa ho hlophisa ka morao, sebelisa -Descending parameter:
Get-Process | Sort-Object cpu -Descending
Ho khetha lintho le likarolo tsa tsona
The Select-Object cmdlet eu lumella ho khetha palo e itseng ea lintho qalong kapa qetellong ea pipeline u sebelisa -First or -Last parameters. Ka thuso ea eona, o ka khetha lintho tse le 'ngoe kapa thepa e itseng, hape o theha lintho tse ncha tse thehiloeng ho tsona. Ha re shebeng hore na cmdlet e sebetsa joang re 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
U ka khetha feela thepa e itseng ea lintho tse fetang pompong 'me u thehe tse ncha ho latela tsona:
Get-Process | Select-Object ProcessName, Id -First 1
Ka lebaka la ts'ebetso ea liphaephe, re tla fumana ntho e ncha, eo sebopeho sa eona se tla fapana le sebopeho se khutlisitsoeng 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: boleng ba bona bo kopitsoe ho tloha nthong ea pele e fetiselitsoeng pompong ke Get-Process cmdlet. E 'ngoe ea litsela tsa ho theha lintho ka har'a lingoloa tsa PowerShell e ipapisitse le ho sebelisa Khetha-Sebaka:
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()
U sebelisa Select-Object, u ka eketsa thepa e bakiloeng ho lintho tse hlokang ho emeloa joalo ka
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, ha re bue ka tse tharo tse molemo ka ho fetisisa:
Bakeng sa Each-Object e o lumella ho tsamaisa 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 PropertyName
Haeba u e tsamaisa ka -NoElement parameter, u ka fumana palo ea likarolo lihlopheng.
Lekanya-Ntho e kopanya liparamente tse fapaneng tsa kakaretso ka boleng ba sebaka sa ntho e phaepheng (e bala kakaretso, hape e fumana bonyane, boholo kapa boleng bo tloaelehileng):
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
Ka tloaelo, li-cmdlets tseo ho buisanoeng ka tsona li sebelisoa ka mokhoa o kopanetsoeng, 'me hangata li bōptjoa ka mangolo.
Ho theha lintho tsa .NET le COM (New-Object)
Ho na le lisebelisoa tse ngata tsa software tse nang le .NET Core le COM interfaces tse molemo ho batsamaisi ba tsamaiso. U sebelisa sehlopha sa System.Diagnostics.EventLog, u ka khona ho laola lintlha tsa tsamaiso ka ho toba ho Windows PowerShell. Ha re shebeng mohlala oa ho theha mohlala oa sehlopha sena ho sebelisa New-Object cmdlet ka -TypeName parameter:
New-Object -TypeName System.Diagnostics.EventLog
Kaha ha rea ka ra hlakisa tlaleho e itseng ea ketsahalo, mohlala o hlahang oa sehlopha ha o na data. Ho fetola sena, o hloka ho letsetsa mokhoa o khethehileng oa sehahi nakong ea popo ea ona o 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
Ka kopo hlokomela hore re bolokile tlhahiso ea taelo ho $AppLog e feto-fetohang. Le hoja lipeipi li atisa ho sebelisoa ka mokhoa oa ho sebelisana, ho ngola mangolo hangata ho hloka hore ho lule ho buuoa ka ntho. Ho phaella moo, litlelase tsa mantlha tsa .NET Core li fumaneha sebakeng sa mabitso sa Sistimi: PowerShell ka mokhoa o ikhethileng e sheba mefuta e boletsoeng ho eona, kahoo ho ngola Diagnostics.EventLog sebakeng sa System.Diagnostics.EventLog e nepahetse.
Ho sebetsa le log, o ka sebelisa mekhoa e nepahetseng:
$AppLog | Get-Member -MemberType Method
Ha re re e hlakotsoe ke mokhoa o hlakileng () haeba ho na le litokelo tsa phihlello:
$AppLog.Clear()
The New-Object cmdlet e boetse e sebelisoa ho sebetsa le likarolo tsa COM. Ho na le tse ngata haholo tsa tsona - ho tloha lilaebraring tse fanoeng ka Windows script server ho ea ho ActiveX applications, tse kang Internet Explorer. Ho theha ntho ea COM, o hloka ho beha parameter ea -ComObject ka ProgId ea lenaneo la sehlopha se lakatsehang:
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
Ho iketsetsa lintho tsa hau ka sebopeho se sa lumellaneng, ho sebelisa New-Object ho bonahala e le ntho ea khale haholo ebile e le boima; cmdlet ena e sebelisetsoa ho sebetsa le likarolo tsa software kantle ho PowerShell. Lihloohong tse tlang ho tla tšohloa taba ena ka ho qaqileng haholoanyane. Ntle le lintho tsa .NET le COM, re tla boela re hlahlobe lintho tsa CIM (WMI) le ADSI.
Ho letsetsa Mekhoa ea Static
Lithuto tse ling tsa .NET Core li ke ke tsa theoa, ho kenyeletsoa System.Environment le System.Math. Ke
[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]::OSVersion
Kapa
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
Tlanya 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 ikhethileng. 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 ho ntho:
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
E 'ngoe ea likotsi tsa lintho tsa mofuta ona ke hore tatellano ea thepa ea bona e ka fetoha. Ho qoba sena, o tlameha 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
$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
Ka kopo hlokomela hore re sebelisitse mofuta oa $ScriptBlock oa mofuta oa ScriptBlock ho boloka khoutu ea mokhoa o mocha.
Ho tlosa thepa, sebelisa mokhoa o lumellanang:
$object.psobject.properties.remove('Name')
Ho Iketsetse Lihlopha tsa Hao
PowerShell 5.0 e hlahisitse bokhoni ba ho hlalosa
class MyClass
{
# тело класса
}
Ena ke 'nete ea mofuta oa NET Core, o nang le' mele o hlalosang thepa ea oona, mekhoa le likarolo tse ling. Ha re shebeng mohlala oa ho hlalosa sehlopha se bonolo ka ho fetisisa:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
Ho theha ntho (mohlala oa sehlopha), sebelisa cmdlet
$object = New-Object -TypeName MyClass
kapa
$object = [MyClass]::new()
Ha re hlahlobeng sebopeho sa ntho:
$object | Get-Member
Se ke oa lebala ka scope: u ke ke ua bitsa mofuta oa lebitso joalo ka khoele kapa ua sebelisa mofuta o itseng kantle ho mongolo kapa mojule oo sehlopha se hlalosoang ho ona. Tabeng ena, mesebetsi e ka khutlisa maemo a sehlopha (lintho) tse tla fumaneha ka ntle ho module 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 ho sebelisa lentsoe 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; ho feta moo, sehlopha se na le
class MyClass2 : MyClass
{
#тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)
Tlhaloso ea rona ea ho sebetsa ka lintho ho PowerShell ha e felle ka letho. Likhatisong tse latelang, re tla leka ho e tebisa ka mehlala e sebetsang: sengoloa sa bohlano letotong le 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