Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Ny famoahana lahatsoratra amin'ny baiko ao amin'ny varavarankelin'ny mpandika teny PowerShell dia fomba iray hanehoana vaovao amin'ny endrika mety amin'ny fahitan'ny olombelona. Alarobia tokoa mirona miasa amin'ny zavatra: ny cmdlets sy ny fiasa dia mandray azy ireo ho fampidirana sy niverina teo amin'ny fivoahana, ary ireo karazana miovaova azo ampiasaina amin'ny interactive sy amin'ny script dia mifototra amin'ny kilasy .NET. Ao amin'ny lahatsoratra fahefatra amin'ny andian-dahatsoratra, dia hianatra momba ny asa amin'ny zavatra amin'ny antsipiriany bebe kokoa.

Fizahan-takelaka:

Zavatra ao amin'ny PowerShell
Fijerena ny firafitry ny zavatra
Sivana zavatra
Fanasokajiana zavatra
Mifantina zavatra sy ny ampahany
ForEach-Object, Group-Object ary Measure-Object
Mamorona zavatra .NET sy COM (Objet Vaovao)
Fiantsoana Static Methods
Type PSCustomObject
Mamorona Kilasinao manokana

Zavatra ao amin'ny PowerShell

Aoka hotsaroantsika fa ny zavatra iray dia fitambaran'ny saha angon-drakitra (fananana, hetsika, sns.) sy fomba fanodinana azy (fomba). Ny firafiny dia voafaritra amin'ny karazana iray, izay matetika mifototra amin'ny kilasy ampiasaina amin'ny sehatra .NET Core iraisana. Azo atao koa ny miasa amin'ny zavatra COM, CIM (WMI) ary ADSI. Ilaina ny fananana sy fomba hanaovana hetsika isan-karazany amin'ny angon-drakitra; Ankoatr'izay, ao amin'ny PowerShell, ny zavatra dia azo ampitaina ho tohan-kevitra amin'ny fiasa sy cmdlet, manome ny sandany amin'ny variables, ary misy koa mekanika famoronana baiko (conveyeur na pipeline). Ny baiko tsirairay ao amin'ny fantsona dia mampita ny famoahana azy amin'ny iray manaraka, zavatra tsirairay. Ho an'ny fanodinana dia azonao atao ny mampiasa cmdlet natambatra na mamorona anao manokana endri-javatra mandrosomba hanao fanodinkodinana isan-karazany amin'ny zavatra ao amin'ny fantsona: sivana, fanasokajiana, vondrona, ary na dia ny fanovana ny rafitra. Ny fandefasana angon-drakitra amin'ity endrika ity dia manana tombony lehibe: ny ekipa mpandray dia tsy mila manara-maso ny stream byte (soratra), ny fampahalalana rehetra ilaina dia mora raisina amin'ny fiantsoana ny fananana sy ny fomba mety.

Fijerena ny firafitry ny zavatra

Ohatra, andeha hojerentsika ny Get-Process cmdlet, izay ahafahanao mahazo fampahalalana momba ny fizotran'ny rafitra:

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Izy io dia hampiseho angon-drakitra misy endrika izay tsy manome hevitra momba ny fananan'ireo zavatra naverina sy ny fomba fiasany. Mba hanitsiana tsara ny vokatra dia mila mianatra mandinika ny firafitry ny zavatra isika, ary ny Get-Member cmdlet dia hanampy antsika amin'izany:

Get-Process | Get-Member

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Eto dia efa hitantsika ny karazana sy ny rafitra, ary miaraka amin'ny fanampian'ny masontsivana fanampiny, ohatra, dia afaka mampiseho afa-tsy ny fananan'ny zavatra tafiditra ao amin'ny fampidirana:

Get-Process | Get-Member -MemberType Property

Ilaina io fahalalana io mba hamahana ny olan'ny fitantanan-draharaha amin'ny fomba ifanakalozan-kevitra na hanoratana ny sora-tananao manokana: ohatra, mba hahazoana fampahalalana momba ny fizotran'ny fanantonana mampiasa ny fananana Responding.

Sivana zavatra

PowerShell dia ahafahan'ny zavatra mifanaraka amin'ny fepetra iray handalo amin'ny fantsona iray:

Where-Object { Π±Π»ΠΎΠΊ сцСнария }

Ny vokatry ny fanatanterahana ny script block ao anatin'ny fononteny dia tokony ho sanda boolean. Raha marina izany ($ marina), ny zavatra ampidirina ao amin'ny Where-Object cmdlet dia halefa amin'ny fantsona, raha tsy izany ($ sandoka) dia ho voafafa. Ohatra, andao asehoy ny lisitry ny serivisy Windows Server najanona, i.e. ireo izay manana ny fananan'ny Status napetraka ho "Najanona":

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

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Eto indray isika dia mahita fanehoana an-tsoratra, fa raha te-hahatakatra ny karazana sy ny rafitra anatiny amin'ny zavatra mandalo amin'ny fantsona dia tsy sarotra izany:

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

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Fanasokajiana zavatra

Rehefa fanodinana fantsona ny zavatra dia matetika ilaina ny manara-maso azy ireo. Ny Sort-Object cmdlet dia mandalo ny anaran'ny fananana (fanalahidy fanasokajiana) ary mamerina ny zavatra voafaritry ny sandany. Mora ny mandamina ny famoahana ny fizotran'ny fandehanana amin'ny fotoana lany amin'ny CPU (fananana CPU):

Get-Process | Sort-Object –Property cpu

Ny parameter -Property dia azo esorina rehefa miantso ny Sort-Object cmdlet; ampiasaina amin'ny default. Ho an'ny fanasokajiana mivadika, ampiasao ny -Descending parameter:

Get-Process | Sort-Object cpu -Descending

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Mifantina zavatra sy ny ampahany

Ny Select-Object cmdlet dia ahafahanao mifantina zavatra maromaro amin'ny fiandohana na fiafaran'ny fantsona mampiasa ny -First na -Last parameters. Miaraka amin'ny fanampiany dia afaka misafidy zavatra tokana na fananana sasany ianao, ary mamorona zavatra vaovao mifototra amin'izy ireo ihany koa. Andeha hojerentsika ny fomba fiasan'ny cmdlet amin'ny fampiasana ohatra tsotra.

Ity baiko manaraka ity dia mampiseho fampahalalana momba ny dingana 10 mandany ny habetsaky ny RAM (fananana WS):

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

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Tsy afaka misafidy afa-tsy toetra sasantsasany amin'ny zavatra mandalo amin'ny fantsona ianao ary mamorona vaovao mifototra amin'izy ireo:

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

Vokatry ny fiasan'ny fantsona dia hahazo zavatra vaovao isika, ny firafitra izay tsy mitovy amin'ny rafitra naverin'ny Get-Process cmdlet. Andao hanamarina izany amin'ny fampiasana Get-Member:

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

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Mariho fa ny Select-Object dia mamerina zavatra tokana (-First 1) izay tsy misy afa-tsy roa amin'ireo saha nofaritanay: ny sandany dia nadika avy amin'ny zavatra voalohany nampidirina tao amin'ny pipeline tamin'ny Get-Process cmdlet. Ny iray amin'ireo fomba hamoronana zavatra amin'ny script PowerShell dia mifototra amin'ny fampiasana Select-Object:

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

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Amin'ny fampiasana Select-Object, azonao atao ny manampy fananana kajy amin'ny zavatra mila aseho tabilao hash. Amin'ity tranga ity, ny sandan'ny fanalahidy voalohany dia mifanaraka amin'ny anaran'ny fananana, ary ny sandan'ny fanalahidy faharoa dia mifanitsy amin'ny sandan'ny fananana ho an'ny singa fantsona ankehitriny:

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

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Andeha hojerentsika ny firafitry ny zavatra mandalo amin'ny conveyor:

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

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

ForEach-Object, Group-Object ary Measure-Object

Misy cmdlet hafa miasa amin'ny zavatra. Ohatra, andao hiresaka momba ireo telo mahasoa indrindra:

ForEach-Object ahafahanao mampandeha ny kaody PowerShell ho an'ny zavatra tsirairay ao anaty fantsona:

ForEach-Object { Π±Π»ΠΎΠΊ сцСнария }

Vondrona-object manambatra zavatra araka ny sandan'ny fananana:

Group-Object PropertyName

Raha toa ianao ka mihazakazaka izany amin'ny -NoElement parameter, dia azonao atao ny mahita ny isan'ny singa ao amin'ny vondrona.

Measure-Object manangona masontsivana famintinana isan-karazany amin'ny soatoavin'ny sahan'ny zavatra ao amin'ny fantsona (manisa ny isa, ary mahita ny sanda kely indrindra, ambony na antonony):

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

Amin'ny ankapobeny, ny cmdlets resahina dia ampiasaina amin'ny interactive, ary matetika dia noforonina amin'ny script. asa miaraka amin'ny Start, Process ary End blocks.

Mamorona zavatra .NET sy COM (Objet Vaovao)

Misy singa rindrambaiko maro miaraka amin'ny .NET Core sy COM interfaces izay mahasoa ny mpitantana ny rafitra. Amin'ny fampiasana ny kilasy System.Diagnostics.EventLog, azonao atao ny mitantana ny diarin'ny rafitra mivantana avy amin'ny Windows PowerShell. Andeha hojerentsika ohatra iray amin'ny famoronana ohatra amin'ity kilasy ity amin'ny fampiasana ny New-Object cmdlet miaraka amin'ny -TypeName parameter:

New-Object -TypeName System.Diagnostics.EventLog

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Koa satria tsy nanondro ny diarin'ny hetsika manokana izahay dia tsy misy angona ny ohatra nateraky ny kilasy. Mba hanovana izany dia mila miantso fomba fanamboarana manokana ianao mandritra ny famoronana azy amin'ny alΓ lan'ny -ArgumentList parameter. Raha te-hiditra amin'ny lozisialy fampiharana isika dia tokony handefa ny tady "Application" ho tohan-kevitra amin'ny mpanamboatra:

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

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Mariho fa notahirizinay tao amin'ny variable $AppLog ny famoahana ny baiko. Na dia matetika ampiasaina amin'ny fomba ifanakalozan-kevitra aza ny fantsona fantsona, ny fanoratana script dia matetika mitaky fitazonana reference amin'ny zavatra iray. Fanampin'izany, ny kilasy fototra .NET Core dia voarakitra ao amin'ny anaran'ny System: PowerShell amin'ny alΓ lan'ny default dia mitady karazana voatondro ao anatiny, noho izany dia marina ny fanoratana Diagnostics.EventLog fa tsy System.Diagnostics.EventLog.

Mba hiasa amin'ny log dia azonao ampiasaina ny fomba mety:

$AppLog | Get-Member -MemberType Method

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Aleo lazaina fa voafafa amin'ny fomba Clear() raha misy zo fidirana:

$AppLog.Clear()

Ny New-Object cmdlet dia ampiasaina ihany koa hiasa amin'ny singa COM. Tena betsaka izy ireo - manomboka amin'ny tranomboky miaraka amin'ny mpizara script Windows mankany amin'ny rindranasa ActiveX, toy ny Internet Explorer. Mba hamoronana zavatra COM dia mila mametraka ny parameter -ComObject miaraka amin'ny Programmatic ProgId an'ny kilasy tianao ianao:

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

Mba hamoronana ny zavatrao manokana miaraka amin'ny rafitra tsy misy dikany, ny fampiasana New-Object dia toa tranainy sy manahirana loatra; ity cmdlet ity dia ampiasaina hiara-miasa amin'ireo singa rindrambaiko ivelan'ny PowerShell. Hodinihina amin’ny an-tsipiriany kokoa ity lahatsoratra ity ao amin’ny lahatsoratra ho avy. Ankoatra ny zavatra .NET sy COM, dia hijery ny zavatra CIM (WMI) sy ADSI ihany koa isika.

Fiantsoana Static Methods

Ny kilasy .NET Core sasany dia tsy azo alaina, anisan'izany ny System.Environment sy System.Math. Izy ireo dia voasakantsakan'ny ary tsy misy afa-tsy toetra sy fomba static. Ireo dia tranomboky fanondro izay ampiasaina nefa tsy mamorona zavatra. Azonao atao ny manondro kilasy static amin'ny alΓ lan'ny ara-bakiteny amin'ny fametahana ny anaran'ny karazana ao anaty fononteny efamira. Na izany aza, raha mijery ny firafitry ny zavatra mampiasa Get-Member isika dia hahita ny karazana System.RuntimeType fa tsy System.Environment:

[System.Environment] | Get-Member

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Raha hijery ny mpikambana static ihany, antsoy ny Get-Member miaraka amin'ny parameter -Static (mariho ny karazana zavatra):

[System.Environment] | Get-Member -Static

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Raha te hidirana amin'ny toetra sy fomba static, dia ampiasao tsangambato roa mifanesy fa tsy fe-potoana aorian'ny litera:

[System.Environment]::OSVersion

na

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

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Type PSCustomObject

Anisan'ireo karazana angona maro hita ao amin'ny PowerShell, ilaina ny manonona PSCustomObject, natao hitahirizana zavatra misy rafitra tsy misy dikany. Ny famoronana zavatra toy izany amin'ny fampiasana ny New-Object cmdlet dia heverina ho fomba mahazatra, saingy sarotra sy efa lany andro:

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

Andeha hojerentsika ny firafitry ny zavatra:

$object | Get-Member

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Manomboka amin'ny PowerShell 3.0, misy syntax hafa misy:

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

Azonao atao ny miditra amin'ny angona amin'ny iray amin'ireo fomba mitovy:

$object.Name

$object.'Name'

$value = 'Name'
$object.$value

Ity misy ohatra iray amin'ny famadihana ny hashtable efa misy ho zavatra iray:

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

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Ny iray amin'ireo tsy fahampian'ny zavatra amin'ity karazana ity dia ny filaharan'ny fananany dia afaka miova. Mba hialana amin'izany dia tsy maintsy mampiasa ny toetra [baiko] ianao:

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

Misy safidy hafa amin'ny famoronana zavatra iray: etsy ambony dia nijery ny fampiasana ny cmdlet izahay Select-object. Ny hany sisa tavela dia ny mamantatra ny manampy sy manala ireo singa. Ny fanaovana izany ho an'ny zavatra avy amin'ny ohatra teo aloha dia tena tsotra:

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

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Ny cmdlet Add-Member dia ahafahanao manampy tsy fananana fotsiny, fa fomba iray amin'ny $ zavatra noforonina teo aloha amin'ny alΓ lan'ny fampiasana ny fananganana "-MemberType ScriptMethod":

$ScriptBlock = {
    # ΠΊΠΎΠ΄ 
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member

Mariho fa nampiasa ny fari-piadidiana $ScriptBlock karazana ScriptBlock izahay mba hitahiry ny kaody ho an'ny fomba vaovao.

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Mba hanesorana ny fananana dia ampiasao ny fomba mifanaraka amin'izany:

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

Mamorona Kilasinao manokana

PowerShell 5.0 dia nampiditra ny fahaizana mamaritra fianarana mampiasa syntax toetran'ny fiteny fandaharana mifototra amin'ny zavatra. Ny teny serivisy Class dia natao ho an'ity, aorian'izay dia tokony hamaritra ny anaran'ny kilasy ianao ary hamaritana ny vatany amin'ny brackets operator:

class MyClass
{
    # Ρ‚Π΅Π»ΠΎ класса
}

Ity dia karazana .NET Core marina, misy vatana iray mamaritra ny toetrany, ny fomba fiasany ary ny singa hafa. Andeha hojerentsika ny ohatra iray amin'ny famaritana ny kilasy tsotra indrindra:

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

Mba hamoronana zavatra (kilasy ohatra), ampiasao ny cmdlet New-Object, na karazana karazana [MyClass] ary fomba pseudostatic vaovao (default constructor):

$object = New-Object -TypeName MyClass

na

$object = [MyClass]::new()

Andeha hojerentsika ny firafitry ny zavatra:

$object | Get-Member

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Aza adino ny momba ny sehatra: tsy afaka manondro anarana karazana ho toy ny tady ianao na mampiasa karazana litera ivelan'ny script na module izay mamaritra ny kilasy. Amin'ity tranga ity, ny asa dia afaka mamerina ny kilasy (zavatra) izay azo idirana ivelan'ny module na script.

Rehefa avy namorona ilay zavatra dia fenoy ny toetrany:

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

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Mariho fa ny famaritana kilasy dia tsy mamaritra ny karazana fananana ihany, fa koa ny sandany default:

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

Ny famaritana ny fomba kilasy dia mitovy amin'ny famaritana ny asa, fa tsy mampiasa ny teny asa. Toy ny amin'ny asa iray, ny paramètre dia alefa amin'ny fomba raha ilaina:

class MyClass 
{
     [string]$Name
     [string]$City
     [string]$Country
     
     #описаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π°
     Smile([bool]$param1)
     {
         If($param1) {
            Write-Host ':)'
         }
     }
}

Ankehitriny dia afaka mitsiky ny solontenan'ny kilasintsika:

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

Mety ho be loatra ny fomba; Ankoatra izany, misy kilasy iray toetra sy fomba static, ary koa ireo mpanamboatra izay mifanitsy amin'ny anaran'ny kilasy ny anarany. Ny kilasy iray voafaritra amin'ny script na PowerShell module dia mety ho fototra ho an'ny iray hafa - izany no fomba fampiharana ny lova. Amin'ity tranga ity dia azo atao ny mampiasa kilasy .NET efa misy ho toy ny fototra:

class MyClass2 : MyClass
{
      #Ρ‚Π΅Π»ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ класса, Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся MyClass
}
[MyClass2]::new().Smile($true)

Ny famariparitanay momba ny fiasana amin'ny zavatra ao amin'ny PowerShell dia zara raha feno. Amin'ireto boky manaraka ireto, dia hiezaka ny halalinina amin'ny ohatra azo ampiharina isika: ny lahatsoratra fahadimy amin'ny andiany dia hatokana ho an'ny olana amin'ny fampidirana PowerShell amin'ny singa rindrambaiko an'ny antoko fahatelo. Ny ampahany taloha dia azo jerena amin'ny rohy etsy ambany.

Fizarana 1: Fampiasa Windows PowerShell fototra
Fizarana 2: Fampidirana ny Windows PowerShell Programming Language
Fizarana 3: fandefasana masontsivana amin'ny script sy ny fiasa, mamorona cmdlet

Inona no atao hoe Windows PowerShell ary inona no ampiasaina? Fizarana 4: Miasa amin'ny zavatra, kilasy manokana

Source: www.habr.com

Add a comment