Imveliso yokubhaliweyo yemiyalelo kwifestile ye-PowerShell yetoliki yindlela nje yokubonisa ulwazi kwifomu efanelekileyo kwimbono yomntu. Ngokwenene ngoLwesithathu
Isiqulatho:
Izinto kwi-PowerShell
Masikhumbule ukuba into yingqokelela yemimandla yedatha (iipropati, iziganeko, njl.) kunye neendlela zokuzilungisa (iindlela). Ubume bayo bucaciswe ngohlobo, oluqhele ukusekwe kwiiklasi ezisetyenziswa kwiqonga elidityanisiweyo .NET Core. Kwakhona kunokwenzeka ukuba usebenze ngezinto ze-COM, CIM (WMI) kunye ne-ADSI. Iipropati kunye neendlela ziyafuneka ukwenza izenzo ezahlukeneyo kwidatha; ukongeza, kwi-PowerShell, izinto zinokugqithiswa njengeengxoxo kwimisebenzi kunye ne-cmdlets, zabelwe amaxabiso azo kwiinguqu, kwaye kukho kwakhona.
Ukujonga ubume bezinto
Umzekelo, masiqhube i-Get-Process cmdlet, ekuvumela ukuba ufumane ulwazi malunga neenkqubo ezisebenza kwinkqubo:
Iza kubonisa idatha ethile ebhaliweyo efomathiweyo enganiki nayiphi na ingcamango malunga neempawu zezinto ezibuyisiweyo kunye neendlela zazo. Ukucokisa imveliso, kufuneka sifunde indlela yokujonga ubume bezinto, kwaye i-Get-Lungu cmdlet iya kusinceda ngale nto:
Get-Process | Get-Member
Apha sele sibona uhlobo kunye nesakhiwo, kwaye ngoncedo lweeparamitha ezongezelelweyo singakwazi, umzekelo, ukubonisa kuphela iipropati zento ezibandakanyiweyo kwigalelo:
Get-Process | Get-Member -MemberType Property
Olu lwazi luya kufuneka ukusombulula iingxaki zolawulo ngokusebenzisana okanye ukubhala izikripthi zakho: umzekelo, ukufumana ulwazi malunga neenkqubo ezixhonyiweyo usebenzisa ipropati yokuPhendula.
Ukuhluza izinto
I-PowerShell ivumela izinto ezidibana nemeko ethile ukuba zigqithwe ngombhobho:
Where-Object { блок сценария }
Isiphumo sokusetyenziswa kwebhloko yeskripthi ngaphakathi kwabazali kufuneka sibe lixabiso le boolean. Ukuba yinyani ($true), into efakwa kwi- Where-Object cmdlet iyakugqithiselwa ecaleni kombhobho, kungenjalo ($false) iya kucinywa. Umzekelo, masibonise uluhlu lweenkonzo ezimisiweyo zeSeva yeWindows, okt. abo ubume bobume babo busetelwe “Kuyekiswa”:
Get-Service | Where-Object {$_.Status -eq "Stopped"}
Apha kwakhona sibona ukumelwa okubhaliweyo, kodwa ukuba ufuna ukuqonda uhlobo kunye nesakhiwo sangaphakathi sezinto ezidlula kumbhobho akunzima:
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
Ukuhlela izinto
Xa ukusetyenzwa kwemibhobho yezinto, kuhlala kukho isidingo sokuzihlela. I-Sort-Object cmdlet igqithiselwe amagama eepropati (izitshixo zokuhlela) kwaye ibuyisela izinto ezicwangciswe ngamaxabiso azo. Kulula ukuhlenga imveliso yeenkqubo ezisebenzayo ngexesha le-CPU elichithwe (ipropathi ye-cpu):
Get-Process | Sort-Object –Property cpu
I -Property iparameter inokushiyeka xa ubiza i Cmdlet yeNgcaciso-nkqubo, isetyenziswa ngokungagqibekanga. Ukuhlenga umva, sebenzisa i -Ukwehla iparamitha:
Get-Process | Sort-Object cpu -Descending
Ukukhetha izinto kunye namalungu azo
I Khetha-Into cmdlet ikuvumela ukuba ukhethe inani elithile lezinto ekuqaleni okanye ekupheleni kombhobho usebenzisa i -First or -Last parameters. Ngoncedo lwayo, unokukhetha izinto ezingatshatanga okanye iipropathi ezithile, kwaye wenze izinto ezintsha ezisekelwe kuzo. Makhe sijonge indlela i-cmdlet esebenza ngayo usebenzisa imizekelo elula.
Lo myalelo ulandelayo ubonisa ulwazi malunga neenkqubo ezili-10 ezisebenzisa ubuninzi be-RAM (ipropathi ye-WS):
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
Unokukhetha kuphela iipropathi ezithile zezinto ezidlula kumbhobho kwaye wenze ezintsha ezisekwe kuzo:
Get-Process | Select-Object ProcessName, Id -First 1
Njengomphumo wokusebenza kombhobho, siya kufumana into entsha, isakhiwo esiya kuhluka kwisakhiwo esibuyiselwe yi-Get-Process cmdlet. Masiqinisekise oku sisebenzisa Fumana iLungu:
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member
Qaphela ukuba i-Khetha-Object ibuyisela into enye (-Yokuqala 1) enemihlaba emibini kuphela esiyichazileyo: amaxabiso abo akhutshelwe ukusuka kwinto yokuqala egqithiselwe kumbhobho yi-Get-Process cmdlet. Enye yeendlela zokwenza izinto kwizikripthi zePowerShell isekwe ekusebenziseni Khetha-iNto:
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()
Usebenzisa Khetha-Into, unokongeza iipropati ezibaliweyo kwizinto ezifuna ukumelwa njenge
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}
Makhe sijonge kwisakhiwo sezinto ezidlula kumhambisi:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
Into-Nganye-Into, iQela-Into kunye neNjongo yoMlinganiselo
Kukho ezinye ii-cmdlets zokusebenza ngezinto. Njengomzekelo, makhe sithethe ngezona zithathu ziluncedo:
Into-Nganye ikuvumela ukuba usebenzise ikhowudi ye-PowerShell yento nganye ekumbhobho:
ForEach-Object { блок сценария }
Iqela-Into amaqela izinto ngexabiso lepropati:
Group-Object PropertyName
Ukuba uqhuba nge-NoElement iparamitha, ungafumana inani lezinto kumaqela.
Umlinganiselo-Into ihlanganisa iiparamitha ezahlukeneyo zesishwankathelo ngamaxabiso entsimi yento kumbhobho (ubala isixa, kwaye ufumana ubuncinci, ubuninzi okanye ixabiso eliphakathi):
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
Ngokuqhelekileyo, ii-cmdlets ezixoxiwe zisetyenziselwa ukusebenzisana, kwaye zihlala ziyilwa kwizikripthi.
Ukudala izinto ze-.NET kunye ne-COM (Into-entsha)
Kukho amacandelo amaninzi esoftware ene-.NET Core kunye nojongano lweCOM oluluncedo kubalawuli benkqubo. Ukusebenzisa i-System.Diagnostics.EventLog iklasi, unokulawula iilogi zenkqubo ngokuthe ngqo kwi-Windows PowerShell. Makhe sijonge kumzekelo wokwenza umzekelo wolu didi usebenzisa i-cmdlet yeNto-Entsha ene--TypeName iparamitha:
New-Object -TypeName System.Diagnostics.EventLog
Ekubeni singakhange sichaze i-log yesiganeko esithile, umzekelo obangelwayo weklasi awunadatha. Ukutshintsha oku, kufuneka ubize indlela ekhethekileyo yomakhi ngexesha lokudalwa kwayo usebenzisa i-parameter ye-ArgumentList. Ukuba sifuna ukufikelela kwilog yesicelo, kufuneka sigqithise umtya othi "Isicelo" njengengxabano kumakhi:
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
Nceda uqaphele ukuba sigcine imveliso yomyalelo kwi-$ AppLog variable. Nangona imibhobho isetyenziswa ngokuqhelekileyo kwimo yokunxibelelana, ukubhala izikripthi kudla ngokufuna ukugcinwa kwereferensi kwinto ethile. Ukongeza, undoqo .NET Iiklasi ezingundoqo ziqulathwe kwiSixokelelwano samagama: I-PowerShell ngokungagqibekanga ijonga iindidi ezikhankanyiweyo kuyo, ngoko ukubhala Diagnostics.EventLog endaweni ye System.Diagnostics.EventLog ichanekile.
Ukusebenza ngelog, ungasebenzisa iindlela ezifanelekileyo:
$AppLog | Get-Member -MemberType Method
Masithi icocwe yi-Clear() indlela ukuba kukho amalungelo ofikelelo:
$AppLog.Clear()
I-cmdlet ye-New-Object iphinda isetyenziswe ukusebenza ngamacandelo e-COM. Zininzi kakhulu - ukusuka kumathala eencwadi abonelelwe ngeWindows script server ukuya kwi-ActiveX izicelo, ezinje nge-Internet Explorer. Ukwenza into ye-COM, kufuneka usete i- -ComObject parameter ngeProgId yeprogram yeklasi oyifunayo:
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
Ukwenza izinto zakho ngolwakhiwo olungenasizathu, usebenzisa i-New-Object ibonakala iyinto yakudala kakhulu kwaye inzima; le cmdlet isetyenziselwa ukusebenza nezinto zesoftware ngaphandle kwePowerShell. Kumanqaku azayo le nkupho iza kuxutyushwa ngokweenkcukacha. Ukongeza kwizinto ze-NET kunye ne-COM, siya kuhlola kwakhona izinto zeCIM (WMI) kunye ne-ADSI.
Ukufowunela Iindlela zeStatic
Ezinye iiklasi zeNET Core azinakuqinisekiswa, ukuquka iSystem.Environment and System.Math. Bazi
[System.Environment] | Get-Member
Ukujonga kuphela amalungu angatshintshiyo, fowunela i-Get-Lungu nge -Static parameter (qaphela uhlobo lwento):
[System.Environment] | Get-Member -Static
Ukufikelela kwiipropathi ezimileyo kunye neendlela, sebenzisa iikholoni ezimbini ezilandelelanayo endaweni yexesha emva kokoqobo:
[System.Environment]::OSVersion
Okanye
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
Chwetheza PSCustomObject
Phakathi kweentlobo ezininzi zedatha ezifumanekayo kwi-PowerShell, kufanelekile ukukhankanya i-PSCustomObject, eyenzelwe ukugcina izinto ngesakhiwo esingenasizathu. Ukudala into enjalo usebenzisa i-cmdlet ye-New-Object ithathwa njengeyona ndlela yakudala, kodwa inzima kwaye iphelelwe lixesha:
$object = New-Object –TypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
Makhe sijonge isakhiwo sento:
$object | Get-Member
Ukuqala ngePowerShell 3.0, enye i-syntax iyafumaneka:
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Unokufikelela kwidatha ngenye yeendlela ezifanayo:
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
Nanku umzekelo wokuguqula i-hashtable ekhoyo ibe yinto:
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
Enye yezinto ezingalunganga zezinto zolu hlobo kukuba umyalelo weempawu zabo unokutshintsha. Ukunqanda oku, kufuneka usebenzise uphawu [olucwangcisiweyo]:
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Kukho ezinye iinketho zokwenza into: ngaphezulu sijonge ukusebenzisa i cmdlet
$object | Add-Member –MemberType NoteProperty –Name Age –Value 33
$object | Get-Member
I-cmdlet yokudibanisa-iLungu ikuvumela ukuba ungeze kungekuphela nje iipropati, kodwa kunye neendlela kwi-object eyenziwe ngaphambili ngokusebenzisa i-"-MemberType ScriptMethod" ukwakha:
$ScriptBlock = {
# код
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
Nceda uqaphele ukuba sisebenzise i-$ScriptBlock eguquguqukayo yohlobo lwe-ScriptBlock ukugcina ikhowudi yendlela entsha.
Ukususa iipropathi, sebenzisa indlela ehambelanayo:
$object.psobject.properties.remove('Name')
Ukuzenzela Ezakho Iiklasi
I-PowerShell 5.0 yazisa amandla okuchaza
class MyClass
{
# тело класса
}
Olu yinyaniso yodidi lwe-NET Core, enomzimba ochaza iipropati zawo, iindlela, kunye nezinye izinto. Makhe sijonge umzekelo wokuchaza eyona klasi ilula:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
Ukwenza into (umzekelo weklasi), sebenzisa i cmdlet
$object = New-Object -TypeName MyClass
okanye
$object = [MyClass]::new()
Makhe sihlalutye isakhiwo sento:
$object | Get-Member
Ungalibali malunga nobubanzi: awukwazi ukubhekisa kuhlobo lwegama njengomtya okanye usebenzise uhlobo oluthile ngaphandle kweskripthi okanye imodyuli apho iklasi ichazwa khona. Kule meko, imisebenzi inokubuyisela iimeko zeklasi (izinto) eziza kufumaneka ngaphandle kwemodyuli okanye iskripthi.
Emva kokudala into, gcwalisa iimpawu zayo:
$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object
Qaphela ukuba inkcazo yeklasi ayikhankanyi kuphela iindidi zepropati, kodwa kunye namaxabiso azo angagqibekanga:
class Example
{
[string]$Name = 'John Doe'
}
Inkcazo yendlela yeklasi ifana nenkcazo yomsebenzi, kodwa ngaphandle kokusebenzisa igama lomsebenzi. Njengomsebenzi, iiparamitha zigqithiselwa kwiindlela ukuba kuyimfuneko:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
#описание метода
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
Ngoku ummeli weklasi yethu unokuncuma:
$object = [MyClass]::new()
$object.Smile($true)
Iindlela zinokugcwala kakhulu; ukongeza, iklasi inakho
class MyClass2 : MyClass
{
#тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)
Inkcazo yethu yokusebenza ngezinto kwi-PowerShell ayide iphele. Kolu papasho lulandelayo, siya kuzama ukulwenza nzulu ngemizekelo esebenzayo: inqaku lesihlanu kuthotho liya kunikezelwa kwimiba yokudibanisa i-PowerShell kunye namacandelo esoftware yomntu wesithathu. Amalungu adlulileyo anokufumaneka kwezi linki zingezantsi.
umthombo: www.habr.com