Ko te whakaputanga kupu o nga whakahau kei te matapihi whakamaori PowerShell he huarahi noa hei whakaatu korero i roto i te ahua e tika ana mo te tirohanga a te tangata. Tino Wenerei
Ripanga ihirangi:
Ahanoa i PowerShell
Kia maumahara tatou ko tetahi mea he kohinga o nga mara raraunga (nga huanga, nga huihuinga, me etahi atu) me nga tikanga mo te tukatuka (tikanga). Ko tona hanganga e tohuhia ana e tetahi momo, i te nuinga o te waa i runga i nga karaehe e whakamahia ana i roto i te kaupapa .NET Core whakakotahi. Ka taea hoki te mahi me nga taonga COM, CIM (WMI) me ADSI. Ko nga ahuatanga me nga tikanga e hiahiatia ana hei mahi i nga momo mahi i runga i nga raraunga; i tua atu, i roto i te PowerShell, ka taea te tukuna nga taonga hei tohenga mo nga mahi me nga cmdlet, ka tohua o raatau uara ki nga taurangi, kei reira ano hoki.
Te tirotiro i te hanganga o nga taonga
Hei tauira, me whakahaere te cmdlet Tiki-Tukanga, ka taea e koe te tiki korero mo nga tukanga e rere ana i roto i te punaha:
Ka whakaatu i etahi raraunga tuhinga kua whakahōputuhia karekau he whakaaro mo nga ahuatanga o nga mea kua whakahokia mai me o raatau tikanga. Hei whakatikatika i te putanga, me ako tatou me pehea te tirotiro i te hanganga o nga mea, ka awhina te cmdlet Tiki-Mema ki a tatou ki tenei:
Get-Process | Get-Member
I konei kua kite tatou i te momo me te hanganga, me te awhina o nga taapiri taapiri ka taea e tatou, hei tauira, te whakaatu i nga ahuatanga o te mea kei roto i te whakauru:
Get-Process | Get-Member -MemberType Property
Ka hiahiatia tenei matauranga ki te whakaoti rapanga whakahaere ma te whakawhitiwhiti korero, ki te tuhi ranei i au ake tuhinga: hei tauira, ki te tiki korero mo nga tukanga whakairi ma te whakamahi i te taonga Whakautu.
Tātari ahanoa
Ka taea e PowerShell nga mea e tutuki ana ki tetahi ahuatanga kia tukuna ma te paipa:
Where-Object { блок сценария }
Ko te hua o te mahi i te paraka tuhi i roto i nga reu me he uara boolean. Mena he pono ($pono), ka tukuna te mea ka uru ki te cmdlet Where-Object ki te paipa, ki te kore ($heka) ka mukua. Hei tauira, me whakaatu he rarangi o nga ratonga Windows Server kua mutu, i.e. te hunga kua tautuhia nga taonga Tūnga ki te "Kua":
Get-Service | Where-Object {$_.Status -eq "Stopped"}
I konei ano ka kite tatou i tetahi whakaaturanga tuhinga, engari ki te hiahia koe ki te mohio ki te momo me te hanganga o roto o nga mea e haere ana i te paipa kaore he uaua:
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
Kōmaka ahanoa
I te wa e tukatuka ana te paipa o nga taonga, he maha nga wa e tika ana kia tohatohahia. Ko te cmdlet Kōmaka-Anoa ka tukuna nga ingoa o nga taonga (whakapapa taviri) ka whakahoki mai i nga mea kua whakaritea e o raatau uara. He mea ngawari ki te whakariterite i te putanga o nga mahi whakahaere ma te wa PTM kua pau (taonga CPU):
Get-Process | Sort-Object –Property cpu
Ka taea te whakakore i te tawhā -Property i te wa e karanga ana i te cmdlet Kōmaka-Anoa; ka whakamahia taunoa. Mo te kōmaka whakamuri, whakamahia te tawhā -Whakaheke:
Get-Process | Sort-Object cpu -Descending
Te whiriwhiri taonga me o raatau waahanga
Ko te cmdlet Tīpako Ahanoa ka taea e koe te kowhiri i te maha o nga mea i te timatanga, i te mutunga ranei o te paipa ma te whakamahi i nga tawhā -Tuatahi, -Whakamutunga ranei. Ma tana awhina, ka taea e koe te kowhiri i nga mea kotahi, i etahi taonga ranei, me te hanga taonga hou i runga i a raatau. Me titiro ki te mahi a te cmdlet ma te whakamahi i nga tauira ngawari.
Ko te whakahau e whai ake nei e whakaatu ana i nga korero mo nga tukanga 10 e pau ana te nui rawa o te RAM (waahanga WS):
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
Ka taea e koe te kowhiri i etahi ahuatanga noa o nga mea e haere ana i te paipa me te hanga i nga mea hou i runga i a raatau:
Get-Process | Select-Object ProcessName, Id -First 1
Ko te hua o te mahi a te paipa, ka whiwhi tatou i tetahi mea hou, ka rereke te hanganga i te hanganga i whakahokia mai e te Get-Process cmdlet. Me manatoko tenei ma te whakamahi i te Tiki-Mema:
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member
Kia mahara ka whakahokia mai e Select-Object tetahi ahanoa kotahi (-Tuatahi 1) e rua noa nga mara i tohua e matou: i kapehia o raatau uara mai i te mea tuatahi i tukuna ki roto i te paipa e te Tiki-Tukanga cmdlet. Ko tetahi o nga huarahi ki te hanga ahanoa i roto i nga tuhinga PowerShell e ahu mai ana i runga i te whakamahi i te Tohu- Ahanoa:
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()
Ma te whakamahi i te ahanoa-tiwhiri, ka taea e koe te taapiri i nga taonga kua oti te tatau ki nga mea e tika ana hei tohu
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}
Kia titiro tatou ki te hanganga o nga mea e haere ana i te kaikawe:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
Mo ia Ahanoa, Ahanoa-rōpū me te Mea Ine
He cmdlet atu ano mo te mahi me nga taonga. Hei tauira, me korero tatou mo nga mea tino pai e toru:
Ma te Ahanoa-Ahanui ka taea e koe te whakahaere waehere PowerShell mo ia ahanoa i te paipa:
ForEach-Object { блок сценария }
Ahanoa-rōpū whakarōpū ahanoa mā te uara taonga:
Group-Object PropertyName
Mena ka whakahaerehia e koe me te tawhā -NoElement, ka kitea e koe te maha o nga huānga o nga roopu.
Mea ine ka whakahiato i nga momo tawhā whakarāpopototanga mā ngā uara āpure ahanoa i roto i te paipa (ka tātaihia te tapeke, ka kitea hoki te uara iti, mōrahi, toharite rānei):
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
Ko te tikanga, ko nga cmdlet e korerohia ana ka whakamahia ma te pahekoheko, he maha nga wa ka hangaia i roto i nga tuhinga.
Waihanga .NET me COM ahanoa (Anoa-Hou)
He maha nga waahanga rorohiko me nga atanga .NET Core me COM e whai hua ana ki nga kaiwhakahaere punaha. Ma te whakamahi i te akomanga System.Diagnostics.EventLog, ka taea e koe te whakahaere tika i nga raarangi punaha mai i te Windows PowerShell. Me titiro ki tetahi tauira o te hanga tauira o tenei karaehe ma te whakamahi i te cmdlet Ahanoa Hou me te tawhā -TypeName:
New-Object -TypeName System.Diagnostics.EventLog
I te mea karekau matou i kii i te raarangi takahanga motuhake, karekau he raraunga i te tauira o te karaehe. Hei huri i tenei, me waea koe ki tetahi tikanga hanga motuhake i te wa i hangaia ai ma te whakamahi i te tawhā -ArgumentList. Mena kei te pirangi matou ki te uru atu ki te raarangi tono, me tuku te aho "Topa" hei tohenga ki te kaihanga:
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
Kia mahara mai i tiakina e matou te putanga o te whakahau i te taurangi $AppLog. Ahakoa te nuinga o nga wa e whakamahia ana nga paipa i roto i te aratau tauwhitiwhiti, ko te tuhi i nga tuhinga tuhi me mau tonu he tohutoro ki tetahi mea. I tua atu, ko nga akomanga matua .NET Core kei roto i te mokowāingoa Pūnaha: PowerShell taunoa e rapu ana i nga momo kua tohua ki roto, na reira he tika te tuhi i te Diagnostics.EventLog hei utu mo te System.Diagnostics.EventLog.
Hei mahi me te raarangi, ka taea e koe te whakamahi i nga tikanga tika:
$AppLog | Get-Member -MemberType Method
Me kii kua whakawāteahia e te tikanga Clear() mena he motika uru:
$AppLog.Clear()
Ka whakamahia ano te cmdlet Ahanoa Hou ki te mahi me nga waahanga COM. He nui rawa - mai i nga whare pukapuka i tukuna me te tūmau hōtuhi Windows ki nga tono ActiveX, penei i te Internet Explorer. Hei waihanga i tetahi ahanoa COM, me whakarite e koe te tawhā -ComObject me te ProgId papatono o te akomanga e hiahiatia ana:
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
Hei waihanga i a koe ake taonga me te hanga noa, te whakamahi i te Ahanoa Hou he ahua tawhito, he uaua hoki; ka whakamahia tenei cmdlet ki te mahi me nga waahanga rorohiko kei waho o PowerShell. I roto i nga tuhinga e whai ake nei ka korerohia tenei putanga i roto i nga korero taipitopito. I tua atu i nga taonga .NET me COM, ka torotoro ano tatou i nga taonga CIM (WMI) me ADSI.
Te karanga tikanga pateko
Ko etahi o nga karaehe .NET Core e kore e taea te whakatau, tae atu ki te System.Environment me te System.Math. Ko ratou
[System.Environment] | Get-Member
Hei tiro i nga mema pateko anake, waea atu ki te Tiki-Mema me te tawhā -Static (tuhia te momo ahanoa):
[System.Environment] | Get-Member -Static
Hei uru atu ki nga ahuatanga me nga tikanga pateko, whakamahia nga kopirua e rua hei utu mo te wa i muri i te kupu:
[System.Environment]::OSVersion
Or
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
Momo PSCustomObject
I roto i nga momo raraunga maha e waatea ana i PowerShell, he pai ki te whakahua i te PSCustomObject, i hangaia mo te penapena taonga me te hanga noa. Ko te hanga i taua ahanoa ma te whakamahi i te cmdlet Ahanoa Hou ka kiia he tikanga matarohia, engari he uaua, he mea tawhito:
$object = New-Object –TypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
Kia titiro tatou ki te hanganga o te mea:
$object | Get-Member
Ka tiimata me te PowerShell 3.0, kei te waatea tetahi atu wetereo:
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Ka taea e koe te uru ki nga raraunga ma tetahi o nga huarahi rite:
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
Anei tetahi tauira o te huri i te ripanga riipene o mua ki te ahanoa:
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
Ko tetahi o nga ngoikoretanga o nga taonga o tenei momo ka taea te whakarereke i te raupapa o o raatau taonga. Hei karo i tenei, me whakamahi koe i te huanga [whakahaua]:
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Ko etahi atu whiringa mo te hanga ahanoa: i runga ake i titiro matou ki te whakamahi i te cmdlet
$object | Add-Member –MemberType NoteProperty –Name Age –Value 33
$object | Get-Member
Ko te cmdlet Tāpiri-Mema ka taea e koe te taapiri i nga taonga anake, engari ano hoki nga tikanga ki tetahi mea $i hanga i mua ma te whakamahi i te "-MemberType ScriptMethod" hanga:
$ScriptBlock = {
# код
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
Kia mahara mai i whakamahia e matou te taurangi $ScriptBlock o te momo ScriptBlock hei rokiroki i te waehere mo te tikanga hou.
Hei tango i nga taonga, whakamahia te tikanga e pa ana:
$object.psobject.properties.remove('Name')
Te Waihanga i o Akoako ake
I whakauruhia e PowerShell 5.0 te kaha ki te tautuhi
class MyClass
{
# тело класса
}
He momo .NET Core pono tenei, me te tinana e whakaatu ana i ona ahuatanga, tikanga, me etahi atu huānga. Kia titiro tatou ki tetahi tauira o te tautuhi i te akomanga ngawari:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
Hei waihanga ahanoa (tauira karaehe), whakamahia te cmdlet
$object = New-Object -TypeName MyClass
ranei
$object = [MyClass]::new()
Kia tātarihia te hanganga o te ahanoa:
$object | Get-Member
Kaua e wareware ki te whānuitanga: e kore e taea e koe te korero ki tetahi ingoa momo hei aho, ki te whakamahi ranei i tetahi momo mooni kei waho o te tuhinga, te waahanga ranei e tautuhia ai te akomanga. I tenei take, ka taea e nga mahi te whakahoki i nga tauira akomanga (mea) ka uru atu ki waho o te waahanga, te tuhinga ranei.
Whai muri i te waihanga i te ahanoa, whakakiia ona ahuatanga:
$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object
Kia mahara ko te whakaahuatanga akomanga ehara i te mea ko nga momo rawa anake, engari ko o raatau uara taunoa:
class Example
{
[string]$Name = 'John Doe'
}
Ko te whakaahuatanga o te tikanga karaehe he rite ki te whakaahuatanga o tetahi mahi, engari me te kore whakamahi i te kupu mahi. Pērā i tētahi mahi, ka tukuna ngā tawhā ki ngā tikanga mēnā e tika ana:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
#описание метода
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
Inaianei ka kata te kanohi o ta maatau akomanga:
$object = [MyClass]::new()
$object.Smile($true)
Ka taea te taumaha i nga tikanga; hei taapiri, he karaehe
class MyClass2 : MyClass
{
#тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)
Ko ta matou whakamaarama mo te mahi me nga taonga kei PowerShell kaore i te whakapau kaha. I roto i nga panui e whai ake nei, ka ngana taatau ki te whakahohonu me nga tauira whaihua: ko te tuarima o nga tuhinga o te raupapa ka whakatapua ki nga take o te whakauru PowerShell me nga waahanga rorohiko tuatoru. Ka kitea nga waahanga o mua i nga hononga i raro nei.
Source: will.com