Izvo zvinyorwa zvinobuda zvemirairo muhwindo remuturikiri wePowerShell ingori nzira yekuratidza ruzivo muchimiro chakakodzera kuona kwevanhu. Chaizvoizvo Chitatu
Tafura yezviri mukati:
Zvinhu muPowerShell
Ngatiyeukei kuti chinhu muunganidzwa weminda data (properties, zviitiko, etc.) uye nzira dzekugadzirisa (maitiro). Chimiro chayo chinotsanangurwa nemhando, iyo inowanzobva pamakirasi anoshandiswa mukubatana .NET Core platform. Zvinogoneka zvakare kushanda neCOM, CIM (WMI) uye ADSI zvinhu. Zvivakwa uye nzira dzinodiwa kuita zviito zvakasiyana-siyana padhata; uyezve, muPowerShell, zvinhu zvinogona kupfuudzwa senharo kumabasa uye cmdlets, zvakapihwa hunhu hwazvo kune zvinosiyana, uye pane zvakare.
Kuona magadzirirwo ezvinhu
Semuenzaniso, ngatimhanyei Get-Process cmdlet, iyo inokutendera iwe kuti uwane ruzivo nezve maitirwo ari kuita muhurongwa:
Icharatidza mamwe mafomati data data iyo isingapi chero pfungwa nezve zvivakwa zvezvinhu zvakadzoserwa uye nzira dzazvo. Kuti tigadzirise zvakabuda, isu tinofanirwa kudzidza maitiro ekuongorora chimiro chezvinhu, uye iyo Get-Member cmdlet ichatibatsira neizvi:
Get-Process | Get-Member
Pano isu tatoona rudzi uye chimiro, uye nerubatsiro rwemamwe ma parameter tinogona, semuenzaniso, kuratidza chete zvimiro zvechinhu chinosanganisirwa mune yekuisa:
Get-Process | Get-Member -MemberType Property
Ruzivo urwu ruchadikanwa kugadzirisa matambudziko ekutonga nekudyidzana kana kunyora ako ega zvinyorwa: semuenzaniso, kuwana ruzivo nezve yakaturikwa maitiro uchishandisa Inopindura pfuma.
Kusefa zvinhu
PowerShell inobvumira zvinhu zvinosangana neimwe mamiriro kuti zvipfuure nepapombi:
Where-Object { блок сценария }
Mhedzisiro yekuita script block mukati memaparentheses inofanira kunge iri boolean value. Kana chiri chokwadi ($ chokwadi), chinhu chinoiswa kune Iyo-Chinhu cmdlet chichapfuudzwa nepapombi, zvikasadaro ($ nhema) ichadzimwa. Semuenzaniso, ngatiratidze runyorwa rweakamisa Windows Server masevhisi, i.e. avo vane Status pfuma yakaiswa kuti "Yakamira":
Get-Service | Where-Object {$_.Status -eq "Stopped"}
Pano zvakare tinoona mufananidzo wezvinyorwa, asi kana iwe uchida kunzwisisa rudzi uye chimiro chemukati chezvinhu zvinopfuura nepombi hazvina kuoma:
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
Kuronga zvinhu
Kana pombi yekugadzirisa zvinhu, pane kazhinji kudikanwa kwekuzvirongedza. Iyo Sort-Object cmdlet inopfuudzwa mazita ezvivakwa (kurongedza makiyi) uye inodzosera zvinhu zvakarairwa nehunhu hwazvo. Zviri nyore kugadzirisa zvinobuda zvekumhanya maitiro neCPU nguva yakashandiswa (cpu pfuma):
Get-Process | Sort-Object –Property cpu
Iyo -Property parameter inogona kusiiwa kana ichidaidza Rongedza-Chinhu cmdlet; inoshandiswa nekukasira. Kuti udzoke kuronga, shandisa iyo -Descending parameter:
Get-Process | Sort-Object cpu -Descending
Kusarudza zvinhu uye zvikamu zvavo
The Select-Object cmdlet inokubvumira kuti usarudze nhamba chaiyo yezvinhu pakutanga kana kupera kwepombi uchishandisa -First or -Last parameters. Nekubatsira kwayo, unogona kusarudza zvinhu zvimwechete kana zvimwe zvinhu, uye zvakare kugadzira zvinhu zvitsva zvichibva pazviri. Ngatitarisei kuti cmdlet inoshanda sei tichishandisa mienzaniso iri nyore.
Iwo unotevera kuraira unoratidza ruzivo nezve gumi maitiro anotora huwandu hwakanyanya hwe RAM (WS pfuma):
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
Iwe unogona kusarudza chete zvimwe zvivakwa zvezvinhu zvinopfuura nepapombi uye kugadzira zvitsva zvichibva pazviri:
Get-Process | Select-Object ProcessName, Id -First 1
Somugumisiro wekushanda kwepombi, tichagamuchira chinhu chitsva, chimiro chayo chichasiyana nechimiro chakadzorerwa neGet-Process cmdlet. Ngationei izvi tichishandisa Get-Member:
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member
Ziva kuti Sarudza-Chinhu chinodzosa chinhu chimwe chete (-Chekutanga 1) chine maviri chete eminda yatakatsanangura: hunhu hwavo hwakakopwa kubva pachinhu chekutanga chakapfuudzwa mupombi neGet-Process cmdlet. Imwe yenzira dzekugadzira zvinhu muPowerShell zvinyorwa zvinobva pakushandisa Sarudza-Chinhu:
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()
Uchishandisa Select-Object, unogona kuwedzera computed zvivakwa kune zvinhu zvinoda kumiririrwa se
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}
Ngatitarisei kuumbwa kwezvinhu zviri kupfuura nemuconveyor:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
ForEach-Object, Group-Object and Measure-Object
Kune mamwe macmdlets ekushanda nezvinhu. Semuenzaniso, ngatitaure nezve matatu anonyanya kubatsira:
YeEach-Chinhu inokutendera kuti umhanye PowerShell kodhi yechinhu chimwe nechimwe chiri mupombi:
ForEach-Object { блок сценария }
Boka-Chinhu mapoka zvinhu nemutengo wepfuma:
Group-Object PropertyName
Kana iwe ukaimhanyisa ne -NoElement parameter, unogona kuona huwandu hwezvinhu mumapoka.
Chiyero-Chinhu inounganidza akasiyana mapfupi maparamita nechinhu chemunda kukosha mupombi (inoverenga iyo sum, uye zvakare inowana hushoma, hurefu kana hwepakati kukosha):
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
Kazhinji, iwo macmdlets anokurukurwa anoshandiswa kupindirana, uye anowanzo gadzirwa mumanyoro.
Kugadzira .NET uye COM zvinhu (Zvitsva-Chinhu)
Pane zvakawanda zvemapurogiramu ane .NET Core uye COM interfaces anobatsira kune system administrator. Uchishandisa kirasi yeSystem.Diagnostics.EventLog, unogona kugadzirisa matanda ehurongwa zvakananga kubva kuWindows PowerShell. Ngatitarisei muenzaniso wekugadzira muenzaniso wekirasi iyi uchishandisa New-Object cmdlet ine -TypeName parameter:
New-Object -TypeName System.Diagnostics.EventLog
Sezvo isu tisina kudoma chaiyo chiitiko chinyorwa, mhedzisiro yekirasi haina data. Kuti uchinje izvi, unofanirwa kufonera yakakosha nzira yekuvaka panguva yekusikwa kwayo uchishandisa iyo -ArgumentList paramende. Kana tichida kuwana irogi rekushandisa, isu tinofanirwa kupfuudza tambo "Chikumbiro" senharo kumugadziri:
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
Ndokumbira utarise kuti isu takachengeta kuburitsa kwemurairo muiyo $AppLog inoshanduka. Kunyange zvazvo mapaipi achiwanzo shandiswa mukudyidzana, kunyora magwaro kunowanzoda kuchengetedza chirevo chechinhu. Pamusoro pezvo, makirasi epakati .NET Core arimo muSitimu namespace: PowerShell nekukasira inotarisa mhando dzakatarwa mairi, saka kunyora Diagnostics.EventLog pachinzvimbo cheSystem.Diagnostics.EventLog ndizvozvo.
Kuti ushande nerogi, unogona kushandisa nzira dzakakodzera:
$AppLog | Get-Member -MemberType Method
Ngatitii inocheneswa neiyo Clear() nzira kana paine kodzero dzekuwana:
$AppLog.Clear()
The New-Object cmdlet inoshandiswawo kushanda neCOM components. Kune akawanda kwazvo - kubva kumaraibhurari akapihwa neWindows script server kune ActiveX application, senge Internet Explorer. Kuti ugadzire chinhu cheCOM, unofanirwa kuseta iyo -ComObject parameter ine programmatic ProgId yekirasi yaunoda:
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
Kugadzira zvinhu zvako uine chimiro chekupokana, uchishandisa Nyowani-Chinhu chinoita sechinyakare uye chakaomesesa; iyi cmdlet inoshandiswa kushanda nesoftware zvikamu zvekunze kuPowerShell. Muzvinyorwa zvinotevera iyi nyaya ichakurukurwa zvakadzama. Kuwedzera kune .NET uye COM zvinhu, tichaongorora zvakare CIM (WMI) uye ADSI zvinhu.
Kufonera Static Methods
Zvimwe .NET Core makirasi haagone kusimbiswa, kusanganisira System.Environment uye System.Math. Vari
[System.Environment] | Get-Member
Kuti uone chete nhengo dzakasimba, fonera Get-Member ne -Static parameter (ona rudzi rwechinhu):
[System.Environment] | Get-Member -Static
Kuti uwane static zvivakwa uye nzira, shandisa maviri akateedzana makoroni panzvimbo yenguva mushure meiyo chaiyo:
[System.Environment]::OSVersion
Kana
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
Nyora PSCustomObject
Pakati peakawanda emhando dzedata dziripo muPowerShell, zvakakodzera kutaura PSCustomObject, yakagadzirirwa kuchengetedza zvinhu zvine chimiro chekupokana. Kugadzira chinhu chakadaro uchishandisa Iyo Nyowani-Chinhu cmdlet inoonekwa seyechinyakare, asi yakaoma uye yakare nzira:
$object = New-Object –TypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
Ngatitarisei chimiro chechinhu:
$object | Get-Member
Kutanga nePowerShell 3.0, imwe syntax inowanikwa:
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Iwe unogona kuwana iyo data mune imwe yenzira dzakaenzana:
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
Heino muenzaniso wekushandura hashtable iripo kuita chinhu:
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
Chimwe chezvakaipa zvezvinhu zverudzi urwu ndechokuti kurongeka kwezvinhu zvavo kunogona kuchinja. Kuti udzivise izvi, unofanirwa kushandisa [yakarongerwa] hunhu:
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Pane dzimwe sarudzo dzekugadzira chinhu: pamusoro takatarisa kushandisa cmdlet
$object | Add-Member –MemberType NoteProperty –Name Age –Value 33
$object | Get-Member
Iyo Wedzera-Nhengo cmdlet inokutendera kuti uwedzere kwete zvivakwa chete, asiwo nzira kune yakambogadzirwa $chinhu uchishandisa iyo "-MemberType ScriptMethod" kuvaka:
$ScriptBlock = {
# код
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
Tapota cherechedza kuti takashandisa $ScriptBlock musiyano werudzi rweScriptBlock kuchengetedza kodhi yenzira itsva.
Kubvisa zvivakwa, shandisa nzira inoenderana:
$object.psobject.properties.remove('Name')
Kugadzira Wako Makirasi
PowerShell 5.0 yakaunza kugona kutsanangura
class MyClass
{
# тело класса
}
Iyi ichokwadi .NET Core type, ine muviri unotsanangura zvimiro zvayo, nzira, nezvimwe zvinhu. Ngatitarisei muenzaniso wekutsanangura kirasi yakapusa:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
Kugadzira chinhu (kirasi muenzaniso), shandisa iyo cmdlet
$object = New-Object -TypeName MyClass
kana
$object = [MyClass]::new()
Ngationgororei chimiro chechinhu:
$object | Get-Member
Usakanganwa nezve scope: haugone kureva zita remhando setambo kana kushandisa mhando chaiyo kunze kwechinyorwa kana module umo kirasi inotsanangurwa. Muchiitiko ichi, mabasa anogona kudzorera makirasi zviitiko (zvinhu) izvo zvinozowanikwa kunze kwemodule kana script.
Mushure mekugadzira chinhu, zadzisa zvimiro zvayo:
$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object
Ziva kuti tsananguro yekirasi haingotauri chete mhando dzezvivakwa, asiwo dzadzo dzekutanga kukosha:
class Example
{
[string]$Name = 'John Doe'
}
Tsananguro yemhando yekirasi inofanana netsanangudzo yebasa, asi pasina kushandisa izwi rekuita. Sebasa, paramita inopfuudzwa kune nzira kana zvichidikanwa:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
#описание метода
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
Iye zvino mumiriri wekirasi yedu anogona kunyemwerera:
$object = [MyClass]::new()
$object.Smile($true)
Nzira dzinogona kuremerwa; nekuwedzera, kirasi ine
class MyClass2 : MyClass
{
#тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)
Tsanangudzo yedu yekushanda nezvinhu muPowerShell haina kupera. Mune zvinyorwa zvinotevera, tichaedza kudzamisa nemuenzaniso unoshanda: chinyorwa chechishanu munhevedzano ichapihwa kune nyaya dzekubatanidza PowerShell nevechitatu-bato software zvikamu. Zvikamu zvakapfuura zvinogona kuwanikwa pane zvinongedzo pazasi.
Source: www.habr.com