Mwepụta ederede nke iwu dị na windo ntụgharị PowerShell bụ naanị ụzọ isi gosipụta ozi n'ụdị dabara adaba maka nghọta mmadụ. N'ezie Wednesday
Tebulu ọdịnaya:
Ihe dị na PowerShell
Ka anyị cheta na ihe bụ nchịkọta data ubi (ihe onwunwe, ihe omume, wdg) na ụzọ maka nhazi ha (usoro). A na-akọwapụta usoro ya site n'ụdị, nke na-adaberekarị na klaasị ejiri na ikpo okwu NET Core jikọtara ọnụ. Enwere ike iji COM, CIM (WMI) na ihe ADSI rụọ ọrụ. Ngwongwo na ụzọ dị mkpa iji rụọ ọrụ dị iche iche na data; na mgbakwunye, na PowerShell, enwere ike ibufe ihe dị ka arụmụka na ọrụ na cmdlets, kenye ụkpụrụ ha na mgbanwe dị iche iche, yana e nwekwara
Na-elele nhazi nke ihe
Dịka ọmụmaatụ, ka anyị mee cmdlet Get-Process, nke na-enye gị ohere ịnweta ozi gbasara usoro na-agba ọsọ na sistemụ:
Ọ ga-egosipụta ụfọdụ data ederede ahaziri nke na-enyeghị echiche ọ bụla gbasara njirimara nke ihe eweghachiri na ụzọ ha. Iji mezie mmepụta, anyị kwesịrị ịmụta ka esi enyocha nhazi nke ihe, na Get-Member cmdlet ga-enyere anyị aka na nke a:
Get-Process | Get-Member
N'ebe a, anyị ahụlarị ụdị na nhazi ahụ, site n'enyemaka nke paramita ndị ọzọ anyị nwere ike, dịka ọmụmaatụ, gosipụta naanị njirimara nke ihe ahụ gụnyere na ntinye:
Get-Process | Get-Member -MemberType Property
Ọmụma a ga-adị mkpa iji dozie nsogbu nchịkwa na mmekọrịta ma ọ bụ iji dee edemede nke gị: dịka ọmụmaatụ, iji nweta ozi gbasara usoro kwụgburu site na iji ihe nzaghachi.
Ihe nzacha
PowerShell na-enye ohere ka ebufe ihe ndị na-ezute ọnọdụ ụfọdụ site na pipeline:
Where-Object { блок сценария }
Nsonaazụ nke ime ihe mgbochi script n'ime mmuke ga-abụrịrị uru boolean. Ọ bụrụ na ọ bụ eziokwu ($ ezi), ihe a na-etinye na Where-Object cmdlet ga-agafe na pipeline, ma ọ bụghị ($ ụgha) a ga-ehichapụ ya. Dịka ọmụmaatụ, ka anyị gosipụta ndepụta ọrụ Windows Server kwụsịrị, ya bụ. ndị ọnọdụ ha ka edobere ka “Kwụsị”:
Get-Service | Where-Object {$_.Status -eq "Stopped"}
N'ebe a ọzọ, anyị na-ahụ ihe nnọchianya nke ederede, ma ọ bụrụ na ịchọrọ ịghọta ụdị na nhazi nke ihe ndị na-agafe na pipeline adịghị esiri ike:
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
Nhazi ihe
Mgbe nhazi pipeline nke ihe, a na-enwekarị mkpa ịhazi ha. Ụdị-Ihe cmdlet na-agafe aha njirimara (igodo nhazi) wee weghachi ihe ndị ejiri ụkpụrụ ha nyere iwu. Ọ dị mfe ịhazi mmepụta nke usoro ịgba ọsọ site na oge CPU ejiri (cpu property):
Get-Process | Sort-Object –Property cpu
Enwere ike ịhapụ paramita -Property mgbe ị na-akpọ Ụdị-Object cmdlet; a na-eji ya na ndabara. Maka nhazi ntụgharị, jiri paramita -Descending:
Get-Process | Sort-Object cpu -Descending
Ịhọrọ ihe na akụkụ ha
cmdlet Select-Object na-enye gị ohere ịhọrọ ọnụọgụ ihe akọwapụtara na mmalite ma ọ bụ njedebe nke pipeline site na iji paramita -First ma ọ bụ -Last. Site n'enyemaka ya, ị nwere ike họrọ otu ihe ma ọ bụ ụfọdụ ihe onwunwe, ma mepụtakwa ihe ọhụrụ dabere na ha. Ka anyị lee ka cmdlet si arụ ọrụ site na iji atụ dị mfe.
Iwu a na-egosiputa ozi gbasara usoro iri na-eri oke RAM (ihe WS):
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
Ị nwere ike ịhọrọ naanị ụfọdụ akụrụngwa nke ihe na-agafe na pipeline wee mepụta nke ọhụrụ dabere na ha:
Get-Process | Select-Object ProcessName, Id -First 1
N'ihi ọrụ nke pipeline, anyị ga-enweta ihe ọhụrụ, nhazi ya ga-adị iche na nhazi nke Get-Process cmdlet weghachiri. Ka anyị jiri Get-Member nyochaa nke a:
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member
Rịba ama na Select-Object na-eweghachi otu ihe (-First 1) nke nwere naanị abụọ n'ime ubi anyị kwuru: e depụtaghachiri ụkpụrụ ha site na ihe mbụ gafere n'ime pipeline site na Get-Process cmdlet. Otu n'ime ụzọ isi mepụta ihe na edemede PowerShell dabere na iji Họrọ-Ihe:
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()
Iji Họrọ-Ihe, ị nwere ike itinye akụrụngwa agbakọtara na ihe ndị achọrọ ka egosipụta ya dị ka
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}
Ka anyị leba anya n'usoro ihe ndị na-agafe na ebu:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
Maka ihe ọ bụla, ihe otu na ihe atụ
Enwere cmdlets ndị ọzọ maka iji ihe arụ ọrụ. Dịka ọmụmaatụ, ka anyị kwuo maka atọ kacha baa uru:
ForEach-Ebumnuche na-enye gị ohere ịme koodu PowerShell maka ihe ọ bụla dị na pipeline:
ForEach-Object { блок сценария }
Otu-Ihe otu ihe site na uru akụrụngwa:
Group-Object PropertyName
Ọ bụrụ na ị na-eji paramita -NoElement na-agba ya, ị nwere ike chọpụta ọnụọgụ nke ihe dị na otu.
Atụ-Ihe na-achịkọta paramita nchịkọta dị iche iche site na uru ubi ihe dị na pipeline (na-agbakọ nchikota, ma chọpụtakwa nke kacha nta, kacha ma ọ bụ nkezi uru):
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
Dịka, cmdlets a tụlere ka a na-eji emekọrịta ihe, a na-ekekarịkwa ya na edemede.
Ịmepụta ihe NET na COM (Ihe Ọhụrụ)
Enwere ọtụtụ ngwa ngwa nwere oghere NET Core na COM bara uru nye ndị nchịkwa sistemụ. Iji klaasị System.Diagnostics.EventLog, ị nwere ike ijikwa ndekọ sistemụ ozugbo site na Windows PowerShell. Ka anyị lee ihe atụ nke imepụta ihe atụ nke klaasị a site na iji cmdlet New-Object nwere oke -TypeName:
New-Object -TypeName System.Diagnostics.EventLog
Ebe ọ bụ na anyị akọwapụtaghị otu ndekọ ihe omume akọwapụtara, ihe atụ nke klas ahụ enweghị data. Iji gbanwee nke a, ịkwesịrị ịkpọ usoro ihe nrụpụta pụrụ iche n'oge okike ya site na iji paramita -ArgumentList. Ọ bụrụ na anyị chọrọ ịnweta log log, anyị kwesịrị ịfefe eriri "Ngwa" dị ka arụmụka nye onye nrụpụta:
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
Biko mara na anyị chekwara mpụta nke iwu ahụ na mgbanwe $AppLog. Ọ bụ ezie na a na-ejikarị pipeline eme ihe na ọnọdụ mmekọrịta, script na-achọkarị idobe ntụaka maka ihe. Ọzọkwa, isi .NET Core klaasị dị na Sistemu ahaspace: PowerShell na ndabara na-achọ ụdị akọwapụtara na ya, yabụ dee Diagnostics.EventLog kama System.Diagnostics.EventLog ziri ezi.
Iji rụọ ọrụ na log, ị nwere ike iji usoro kwesịrị ekwesị:
$AppLog | Get-Member -MemberType Method
Ka anyị kwuo na ejiri usoro Clear() kpochapụ ya ma ọ bụrụ na enwere ikike ịnweta:
$AppLog.Clear()
A na-ejikwa cmdlet Ọhụrụ-Object arụ ọrụ na ngwa COM. Enwere ọtụtụ n'ime ha - site na ọba akwụkwọ ewepụtara na sava script Windows gaa na ngwa ActiveX, dị ka Internet Explorer. Iji mepụta ihe COM, ịkwesịrị ịtọ ntọala -ComObject na ProgId mmemme nke klaasị achọrọ:
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
Iji mepụta ihe nke gị nwere usoro aka ike, iji New-Object dị ka ihe na-adịghị mma na nke siri ike; cmdlet a na-eji ngwa ngwa arụ ọrụ na mpụga PowerShell. N'isiokwu ndị na-abịa n'ihu, a ga-atụlekwu okwu a n'ụzọ zuru ezu. Na mgbakwunye na ihe NET na COM, anyị ga-enyocha CIM (WMI) na ihe ADSI.
Usoro ịkpọ oku
Ụfọdụ .NET Core klaasị enweghị ike ozugbo, gụnyere System.Environment na System.Math. Ha bụ
[System.Environment] | Get-Member
Ka ilele naanị ndị otu kwụ ọtọ, kpọọ Get-Member nwere paramita -Static (rịba ama ụdị ihe):
[System.Environment] | Get-Member -Static
Iji nweta akụrụngwa na ụzọ kwụ ọtọ, jiri colons abụọ na-esochi anya kama oge mgbe nke a gachara:
[System.Environment]::OSVersion
Ma ọ bụ
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
Ụdị PSCustomObject
N'ime ọtụtụ ụdị data dị na PowerShell, ọ bara uru ịkpọ PSCustomObject, emebere maka ịchekwa ihe nwere usoro aka ike. A na-ahụta imepụta ihe dị otú ahụ site na iji New-Object cmdlet dị ka kpochapụla, mana ụzọ siri ike na nke ochie:
$object = New-Object –TypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
Ka anyị leba anya n'usoro ihe ahụ:
$object | Get-Member
Malite na PowerShell 3.0, syntax ọzọ dị:
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Ị nwere ike ịnweta data ahụ n'otu n'ime ụzọ ndị ahụ:
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
Nke a bụ ọmụmaatụ nke ịtụgharị hashtable dị adị ka ọ bụrụ ihe:
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
Otu n'ime ihe ọjọọ nke ihe ndị dị otú a bụ na usoro nke ihe onwunwe ha nwere ike ịgbanwe. Iji zere nke a, ị ga-ejirịrị njirimara [nyere iwu]:
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Enwere nhọrọ ndị ọzọ maka ịmepụta ihe: n'elu anyị lere anya iji cmdlet
$object | Add-Member –MemberType NoteProperty –Name Age –Value 33
$object | Get-Member
cmdlet Tinye-Member na-enye gị ohere itinye ọ bụghị naanị akụrụngwa, kamakwa usoro na ihe $ ihe emebere na mbụ site na iji “-MemberType ScriptMethod” rụrụ:
$ScriptBlock = {
# код
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
Biko mara na anyị jiri ụdị ScriptBlock mgbanwe $ScriptBlock chekwaa koodu maka usoro ọhụrụ ahụ.
Iji wepu akụrụngwa, jiri usoro kwekọrọ:
$object.psobject.properties.remove('Name')
Ịmepụta klas nke gị
PowerShell 5.0 webatara ikike ịkọwapụta
class MyClass
{
# тело класса
}
Nke a bụ eziokwu .NET Core ụdị, nwere ahụ na-akọwa njirimara ya, ụzọ ya na ihe ndị ọzọ. Ka anyị lee ihe atụ nke ịkọwapụta klas kacha mfe:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
Iji mepụta ihe (ihe atụ klaasị), jiri cmdlet
$object = New-Object -TypeName MyClass
ma ọ bụ
$object = [MyClass]::new()
Ka anyị nyochaa nhazi nke ihe ahụ:
$object | Get-Member
Echefula banyere obosara: ị nweghị ike ịtu aka na ụdị aha dị ka eriri ma ọ bụ jiri ụdị nkịtị na-abụghị edemede ma ọ bụ modul nke akọwapụtara klas ahụ. N'okwu a, ọrụ nwere ike weghachi klas (ihe) nke a ga-enweta na mpụga modul ma ọ bụ edemede.
Mgbe ịmepụtachara ihe ahụ, dejupụta akụrụngwa ya:
$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object
Rịba ama na nkọwa klas ahụ na-akọwapụta ọ bụghị naanị ụdị akụrụngwa, kamakwa ụkpụrụ ndabara ha:
class Example
{
[string]$Name = 'John Doe'
}
Nkọwa nke usoro klaasị yiri nkọwa nke ọrụ, mana na-ejighi okwu ọrụ. Dị ka ọ dị na ọrụ, a na-agafe paramita na usoro ma ọ bụrụ na ọ dị mkpa:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
#описание метода
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
Ugbu a onye nnọchi anya klaasị anyị nwere ike ịmụmụ ọnụ ọchị:
$object = [MyClass]::new()
$object.Smile($true)
Usoro nwere ike ibufe oke; na mgbakwunye, otu klas nwere
class MyClass2 : MyClass
{
#тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)
Nkọwa anyị maka iji ihe arụ ọrụ na PowerShell anaghị agwụ ike. N'akwụkwọ ndị na-esonụ, anyị ga-agbalị iji ihe atụ bara uru mee ka ya dịkwuo omimi: isiokwu nke ise na usoro a ga-etinye aka na okwu nke ijikọ PowerShell na ngwa ngwa ndị ọzọ. Enwere ike ịhụ akụkụ ndị gara aga na njikọ dị n'okpuru.
isi: www.habr.com