Níl in aschur téacs na n-orduithe i bhfuinneog ateangaire PowerShell ach bealach chun faisnéis a thaispeáint i bhfoirm atá oiriúnach don dearcadh daonna. I ndáiríre Dé Céadaoin
Suil:
Réada i PowerShell
Meabhraímid gur bailiúchán de réimsí sonraí (airíonna, imeachtaí, etc.) agus modhanna chun iad a phróiseáil (modhanna) é réad. Tá a struchtúr sonraithe de réir cineáil, atá bunaithe de ghnáth ar ranganna a úsáidtear san ardán aontaithe .NET Core. Is féidir oibriú le réada COM, CIM (WMI) agus ADSI freisin. Tá gá le hairíonna agus modhanna chun gníomhartha éagsúla a dhéanamh ar shonraí; ina theannta sin, i PowerShell, is féidir rudaí a chur ar aghaidh mar argóintí chuig feidhmeanna agus cmdlets, a luachanna a shannadh d'athróga, agus tá
Breathnú ar struchtúr rudaí
Mar shampla, déanaimis an cmdlet Get-Process a rith, a ligeann duit faisnéis a fháil faoi na próisis a ritheann sa chóras:
Taispeánfaidh sé roinnt sonraí téacs formáidithe nach dtugann aon smaoineamh faoi airíonna na n-ábhar a cuireadh ar ais agus a modhanna. Chun an t-aschur a mhionchoigeartú, ní mór dúinn foghlaim conas struchtúr rudaí a scrúdú, agus cabhróidh an cmdlet Get-Member linn leis seo:
Get-Process | Get-Member
Anseo feicimid an cineál agus an struchtúr cheana féin, agus le cabhair ó pharaiméadair bhreise is féidir linn, mar shampla, airíonna an ruda atá san áireamh san ionchur a thaispeáint:
Get-Process | Get-Member -MemberType Property
Beidh an t-eolas seo ag teastáil chun fadhbanna riaracháin a réiteach go hidirghníomhach nó chun do chuid scripteanna féin a scríobh: mar shampla, chun faisnéis a fháil faoi phróisis crochta ag baint úsáide as an airí Responding.
Rudaí a scagadh
Ligeann PowerShell rudaí a chomhlíonann coinníoll áirithe a chur trí phíblíne:
Where-Object { блок сценария }
Caithfidh luach booleach a bheith mar thoradh ar an mbloc scripte a chur i gcrích laistigh de na lúibíní. Más fíor é ($true), cuirfear an réad a chuirtear isteach sa cmdlet Where-Object ar aghaidh feadh na píblíne, nó ($false) scriosfar é. Mar shampla, taispeánfaimid liosta de na seirbhísí Windows Server atá stoptha, i.e. iad siúd a bhfuil a gcuid maoine “Stoptha” socraithe:
Get-Service | Where-Object {$_.Status -eq "Stopped"}
Anseo arís feicimid léiriú téacsúil, ach más mian leat cineál agus struchtúr inmheánach na n-ábhar a théann tríd an bpíblíne a thuiscint, níl sé deacair:
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
Rudaí a shórtáil
Nuair a bhíonn rudaí á bpróiseáil píblíne, is minic is gá iad a shórtáil. Cuirtear ainmneacha na n-airíonna (eochracha sórtála) ar aghaidh sa cmdlet Sort-Object agus seolann sé rudaí a ordaítear de réir a luachanna ar ais. Tá sé éasca aschur na bpróiseas reatha a shórtáil de réir an ama a chaitear ag LAP (airí an cpu):
Get-Process | Sort-Object –Property cpu
Is féidir an paraiméadar -Property a fhágáil ar lár nuair a ghlaonn tú ar an cmdlet Sort-Object; úsáidtear é de réir réamhshocraithe. Le haghaidh sórtáil droim ar ais, bain úsáid as an paraiméadar -Descending:
Get-Process | Sort-Object cpu -Descending
Roghnú rudaí agus a bpáirteanna
Ceadaíonn an cmdlet Select-Object duit líon sonrach rudaí a roghnú ag tús nó ag deireadh píblíne ag baint úsáide as na paraiméadair -First or -Last. Le cabhair uaidh, is féidir leat rudaí aonair nó airíonna áirithe a roghnú, agus rudaí nua a chruthú bunaithe orthu freisin. Breathnaímid ar conas a oibríonn an cmdlet ag baint úsáide as samplaí simplí.
Taispeánann an t-ordú seo a leanas faisnéis faoi na 10 bpróiseas a ídíonn an t-uasmhéid RAM (airí WS):
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
Ní féidir leat ach airíonna áirithe rudaí a théann tríd an bpíblíne a roghnú agus cinn nua a chruthú bunaithe orthu:
Get-Process | Select-Object ProcessName, Id -First 1
Mar thoradh ar oibriú na píblíne, gheobhaidh muid rud nua, a mbeidh a struchtúr difriúil leis an struchtúr ar ais ag an cmdlet Get-Process. Déanaimis é seo a fhíorú le Get-Member:
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member
Tabhair faoi deara go dtugann Select-Object réad amháin (-First 1) ar ais nach bhfuil ach dhá cheann de na réimsí a shonraigh muid: cóipeáladh a luachanna ón gcéad réad a cuireadh isteach sa phíblíne ag an cmdlet Get-Process. Tá ceann de na bealaí chun rudaí a chruthú i scripteanna PowerShell bunaithe ar Roghnaigh-Object a úsáid:
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()
Ag baint úsáide as Roghnaigh-Réad, is féidir leat airíonna ríofa a chur le rudaí nach mór a léiriú mar
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}
Breathnaímid ar struchtúr rudaí a théann tríd an iompair:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
ForEach-Réad, Grúpa-Réad agus Beart-Réad
Tá cmdlets eile ann chun oibriú le rudaí. Mar shampla, déanaimis labhairt faoi na trí cinn is úsáidí:
ForEach-Cuspóir ligeann sé duit cód PowerShell a rith le haghaidh gach réad sa phíblíne:
ForEach-Object { блок сценария }
Grúpa-Réad rudaí a ghrúpáil de réir luach maoine:
Group-Object PropertyName
Má ritheann tú é leis an bparaiméadar -NoElement, is féidir leat líon na n-eilimintí sna grúpaí a fháil amach.
Beart-Réad comhiomlánaíonn sé paraiméadair achoimre éagsúla de réir luachanna oibiachta réimse sa phíblíne (ríomhann sé an tsuim, agus faigheann sé freisin an t-íosluach, an t-uasluach nó an meánluach):
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
Go hiondúil, úsáidtear na cmdlets a phléitear go hidirghníomhach, agus is minic a chruthaítear iad i scripteanna.
réada .NET agus COM a chruthú (Réad Nua)
Tá go leor comhpháirteanna bogearraí le comhéadain .NET Core agus COM atá úsáideach do riarthóirí córais. Ag baint úsáide as an rang System.Diagnostics.EventLog, is féidir leat logaí córais a bhainistiú go díreach ó Windows PowerShell. Breathnaímid ar shampla de shampla den aicme seo a chruthú ag baint úsáide as an cmdlet New-Object leis an bparaiméadar -TypeName:
New-Object -TypeName System.Diagnostics.EventLog
Ós rud é nár shonraigh muid loga teagmhais ar leith, níl aon sonraí ar an gcás mar thoradh ar an rang. Chun é seo a athrú, ní mór duit modh cruthaitheoir speisialta a ghlaoch le linn é a chruthú ag baint úsáide as an bparaiméadar -ArgumentList. Más mian linn logáil an fheidhmchláir a rochtain, ba cheart dúinn an teaghrán "Iarratas" a chur ar aghaidh mar argóint don chruthaitheoir:
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
Tabhair faoi deara gur shábháíomar aschur an ordaithe san athróg $AppLog. Cé go n-úsáidtear píblínte go coitianta i mód idirghníomhach, is minic go mbíonn gá le tagairt do réad a scríobh scripteanna a scríobh. Ina theannta sin, tá na croí-ranganna .NET Core san ainmspás an Chórais: féachann PowerShell de réir réamhshocraithe do chineálacha sonraithe ann, mar sin tá scríobh Diagnostics.EventLog in ionad System.Diagnostics.EventLog ceart go leor.
Chun oibriú leis an logáil, is féidir leat na modhanna cuí a úsáid:
$AppLog | Get-Member -MemberType Method
Ligean le rá go bhfuil sé glanta leis an modh Clear() má tá cearta rochtana ann:
$AppLog.Clear()
Úsáidtear an cmdlet New-Object freisin chun oibriú le comhpháirteanna COM. Tá go leor acu ann - ó na leabharlanna a sholáthraítear leis an bhfreastalaí script Windows go feidhmchláir ActiveX, mar Internet Explorer. Chun réad COM a chruthú, ní mór duit an paraiméadar -ComObject a shocrú le ProgId ríomhchláraithe an aicme atá uait:
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
Chun do chuid réad féin a chruthú le struchtúr treallach, is cosúil go bhfuil úsáid á baint as New-Object ró-seansúla agus ró-chasta; úsáidtear an cmdlet seo chun oibriú le comhpháirteanna bogearraí lasmuigh de PowerShell. In altanna amach anseo déanfar an cheist seo a phlé níos mine. Chomh maith le réada .NET agus COM, déanfaimid iniúchadh freisin ar réada CIM (WMI) agus ADSI.
Modhanna Statach a ghlaoch
Ní féidir roinnt ranganna .NET Core a chur ar an toirt, lena n-áirítear System.Environment agus System.Math. Tá siad
[System.Environment] | Get-Member
Chun féachaint ar bhaill statacha amháin, cuir glaoch ar Get-Member leis an bparaiméadar -Static (tabhair faoi deara an cineál oibiachta):
[System.Environment] | Get-Member -Static
Chun airíonna agus modhanna statacha a rochtain, bain úsáid as dhá choilín as a chéile in ionad tréimhse tar éis an liteartha:
[System.Environment]::OSVersion
Nó
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
Cineál PSCustomObject
I measc na gcineálacha iomadúla sonraí atá ar fáil i PowerShell, is fiú PSCustomObject a lua, atá deartha chun rudaí a stóráil le struchtúr treallach. Meastar gur bealach clasaiceach, ach achrannach agus as dáta é rud den sórt sin a chruthú leis an cmdlet New-Object:
$object = New-Object –TypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
Breathnaímid ar struchtúr an ruda:
$object | Get-Member
Ag tosú le PowerShell 3.0, tá comhréir eile ar fáil:
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Is féidir leat rochtain a fháil ar na sonraí ar cheann de na bealaí coibhéiseacha:
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
Seo sampla de hashtable atá ann cheana a thiontú go réad:
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
Ceann de na míbhuntáistí a bhaineann le rudaí den chineál seo ná gur féidir ord a n-airíonna a athrú. Chun é seo a sheachaint, ní mór duit an aitreabúid [ordaithe] a úsáid:
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Tá roghanna eile ann chun réad a chruthú: thuas d'fhéachamar ar an cmdlet a úsáid
$object | Add-Member –MemberType NoteProperty –Name Age –Value 33
$object | Get-Member
Ligeann an cmdlet Breiseáin duit ní hamháin airíonna, ach freisin modhanna a chur le $object a cruthaíodh roimhe seo trí úsáid a bhaint as an tógáil "-MemberType ScriptMethod":
$ScriptBlock = {
# код
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
Tabhair faoi deara gur úsáideamar an athróg $ScriptBlock den chineál ScriptBlock chun an cód don mhodh nua a stóráil.
Chun airíonna a bhaint, bain úsáid as an modh comhfhreagrach:
$object.psobject.properties.remove('Name')
Do Ranganna Féin á Chruthú
Thug PowerShell 5.0 isteach an cumas a shainiú
class MyClass
{
# тело класса
}
Is cineál fíor .NET Core é seo, le comhlacht a chuireann síos ar a chuid airíonna, modhanna, agus eilimintí eile. Breathnaímid ar shampla den rang is simplí a shainiú:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
Chun réad a chruthú (mar shampla ranga), úsáid an cmdlet
$object = New-Object -TypeName MyClass
nó
$object = [MyClass]::new()
Déanaimis anailís ar struchtúr an ruda:
$object | Get-Member
Ná déan dearmad faoin raon feidhme: ní féidir leat tagairt a dhéanamh d'ainm cineáil mar theaghrán nó cineál litriúil a úsáid lasmuigh den script nó den mhodúl ina bhfuil an rang sainithe. Sa chás seo, is féidir le feidhmeanna cásanna ranga (rudaí) a bheidh inrochtana lasmuigh den mhodúl nó den script a thabhairt ar ais.
Tar éis an réad a chruthú, líon isteach a chuid maoine:
$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object
Tabhair faoi deara go sonraíonn an tuairisc ranga ní hamháin na cineálacha maoine, ach freisin a luachanna réamhshocraithe:
class Example
{
[string]$Name = 'John Doe'
}
Tá an cur síos ar mhodh ranga cosúil leis an gcur síos ar fheidhm, ach gan an focal feidhme a úsáid. Mar is amhlaidh i bhfeidhm, cuirtear paraiméadair ar aghaidh chuig modhanna más gá:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
#описание метода
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
Anois is féidir le hionadaí ár rang aoibh gháire:
$object = [MyClass]::new()
$object.Smile($true)
Is féidir modhanna a ró-ualú; ina theannta sin, tá rang ag
class MyClass2 : MyClass
{
#тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)
Is ar éigean go bhfuil ár gcur síos ar oibriú le réada in PowerShell uileghabhálach. Sna foilseacháin seo a leanas, déanfaimid iarracht é a dhoimhniú le samplaí praiticiúla: beidh an cúigiú alt sa tsraith dírithe ar na saincheisteanna a bhaineann le PowerShell a chomhtháthú le comhpháirteanna bogearraí tríú páirtí. Is féidir páirteanna san am atá caite a fháil ag na naisc thíos.
Foinse: will.com