ʻO ka hoʻopuka kikokikona o nā kauoha ma ka puka makani unuhi PowerShell he ala wale nō ia e hōʻike ai i ka ʻike ma kahi ʻano kūpono i ka ʻike kanaka. ʻO ka Pōʻakolu maoli
Papa o ka waihona:
Nā mea ma PowerShell
E hoʻomanaʻo kākou he hōʻiliʻili o nā kahua ʻikepili (nā waiwai, nā hanana, a me nā mea ʻē aʻe) a me nā ala no ka hoʻoponopono ʻana iā lākou (nā ʻano). Hōʻike ʻia kona ʻano e kahi ʻano, i hoʻokumu pinepine ʻia ma nā papa i hoʻohana ʻia i ka unified .NET Core platform. Hiki ke hana pū me COM, CIM (WMI) a me nā mea ADSI. Pono nā waiwai a me nā ʻano hana e hana i nā hana like ʻole ma ka ʻikepili; Eia kekahi, ma PowerShell, hiki ke hoʻolilo ʻia nā mea i hoʻopaʻapaʻa i nā hana a me nā cmdlets, hāʻawi ʻia i kā lākou mau waiwai i nā mea hoʻololi, a aia pū kekahi.
Nānā i ke ʻano o nā mea
No ka laʻana, e holo kāua i ka Get-Process cmdlet, e ʻae iā ʻoe e kiʻi i ka ʻike e pili ana i nā kaʻina hana e holo nei i ka ʻōnaehana:
E hōʻike ia i kekahi ʻikepili kikokikona i hoʻopaʻa ʻia ʻaʻole i hāʻawi i ka manaʻo e pili ana i nā waiwai o nā mea i hoʻihoʻi ʻia a me kā lākou mau ʻano. No ka hoʻoponopono maikaʻi ʻana i ka hopena, pono mākou e aʻo pehea e nānā ai i ke ʻano o nā mea, a e kōkua ka Get-Member cmdlet iā mākou me kēia:
Get-Process | Get-Member
Maanei ua ʻike mākou i ke ʻano a me ke ʻano, a me ke kōkua o nā ʻāpana ʻē aʻe hiki iā mākou, no ka laʻana, hōʻike wale i nā waiwai o ka mea i hoʻokomo ʻia i ka hoʻokomo:
Get-Process | Get-Member -MemberType Property
Pono kēia ʻike no ka hoʻoponopono ʻana i nā pilikia hoʻokele a i ʻole ke kākau ʻana i kāu mau palapala ponoʻī: no ka laʻana, e kiʻi i ka ʻike e pili ana i nā kaʻina hana e hoʻohana ana i ka waiwai Responding.
Nā mea kānana
Hāʻawi ʻo PowerShell i nā mea i kūpono i kekahi kūlana e hele i kahi paipu:
Where-Object { блок сценария }
ʻO ka hopena o ka hoʻokō ʻana i ka poloka palapala i loko o nā pale he waiwai boolean. Inā he ʻoiaʻiʻo ($ ʻoiaʻiʻo), e hāʻawi ʻia ka mea i hoʻokomo ʻia i ka Where-Object cmdlet ma ka pipeline, a i ʻole ($ wahaheʻe) e holoi ʻia. No ka laʻana, e hōʻike mākou i kahi papa inoa o nā lawelawe Windows Server i hoʻōki, ʻo ia. ka poʻe nona ka waiwai Kūlana i hoʻonohonoho ʻia i "Stopped":
Get-Service | Where-Object {$_.Status -eq "Stopped"}
Eia hou mākou ʻike i kahi kikokikona, akā inā makemake ʻoe e hoʻomaopopo i ke ʻano a me ke ʻano o loko o nā mea e hele ana i ka pipeline ʻaʻole paʻakikī:
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
Hoʻokaʻawale i nā mea
I ka hana ʻana o ka pipeline i nā mea, pono pinepine e hoʻokaʻawale iā lākou. Hāʻawi ʻia ka Sort-Object cmdlet i nā inoa o nā waiwai (nā kī koho) a hoʻihoʻi i nā mea i kauoha ʻia e ko lākou mau waiwai. He mea maʻalahi ka hoʻokaʻawale ʻana i ka hopena o nā kaʻina hana e ka manawa CPU i hoʻohana ʻia (waiwai cpu):
Get-Process | Sort-Object –Property cpu
Hiki ke hoʻokuʻu ʻia ka ʻāpana -Property i ke kāhea ʻana i ka Sort-Object cmdlet; ua hoʻohana ʻia ia ma ka paʻamau. No ka hoʻokaʻawale ʻana, e hoʻohana i ka -Descending parameter:
Get-Process | Sort-Object cpu -Descending
Ke koho ʻana i nā mea a me kā lākou mau ʻāpana
ʻO ka cmdlet Select-Object hiki iā ʻoe ke koho i kahi helu kikoʻī o nā mea i ka hoʻomaka a i ʻole ka hopena o kahi pipeline me ka hoʻohana ʻana i nā ʻāpana -First a i ʻole -Last. Me kona kōkua, hiki iā ʻoe ke koho i nā mea hoʻokahi a i ʻole kekahi mau waiwai, a hana pū i nā mea hou e pili ana iā lākou. E nānā kākou i ka hana ʻana o ka cmdlet me ka hoʻohana ʻana i nā laʻana maʻalahi.
Hōʻike kēia kauoha i ka ʻike e pili ana i nā kaʻina hana 10 e hoʻopau ana i ka nui o ka RAM (waiwai WS):
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
Hiki iā ʻoe ke koho i kekahi mau waiwai o nā mea e hele ana i ka pipeline a hana i nā mea hou e pili ana iā lākou:
Get-Process | Select-Object ProcessName, Id -First 1
Ma muli o ka hana ʻana o ka pipeline, e loaʻa iā mākou kahi mea hou, ʻokoʻa ke ʻano o ke ʻano mai ka hale i hoʻihoʻi ʻia e ka Get-Process cmdlet. E hōʻoia i kēia me ka hoʻohana ʻana iā Get-Member:
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member
E hoʻomaopopo i ka hoʻihoʻi ʻana o Select-Object i kahi mea hoʻokahi (-First 1) ʻelua wale nō o nā māla a mākou i kuhikuhi ai: ua kope ʻia kā lākou mau waiwai mai ka mea mua i hoʻoili ʻia i loko o ka pipeline e ka Get-Process cmdlet. ʻO kekahi o nā ala e hana ai i nā mea ma nā palapala PowerShell e pili ana i ka hoʻohana ʻana i Select-Object:
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()
Ke hoʻohana nei i ka Select-Object, hiki iā ʻoe ke hoʻohui i nā waiwai i helu ʻia i nā mea pono e hōʻike ʻia
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}
E nānā kākou i ke ʻano o nā mea e hele ana ma ka conveyor:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
No kēlā me kēia-mea, hui-mea a me ana-mea
Aia nā cmdlets ʻē aʻe no ka hana ʻana me nā mea. Ma ke ʻano he laʻana, e kamaʻilio kākou e pili ana i ʻekolu mea pono loa:
No-ʻOlau hiki iā ʻoe ke holo i ka code PowerShell no kēlā me kēia mea i ka pipeline:
ForEach-Object { блок сценария }
Hui-mea hui i nā mea ma ka waiwai waiwai:
Group-Object PropertyName
Inā holo ʻoe me ka -NoElement parameter, hiki iā ʻoe ke ʻike i ka helu o nā mea i loko o nā hui.
Ana-mea hōʻuluʻulu i nā ʻāpana hōʻuluʻulu like ʻole e nā waiwai kahua mea i loko o ka pipeline (heluhelu i ka huina, a loaʻa hoʻi ka liʻiliʻi, ka nui a i ʻole ka waiwai awelika):
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
ʻO ka maʻamau, hoʻohana ʻia nā cmdlet i kūkākūkā ʻia, a ua hana pinepine ʻia i nā palapala.
Ke hana nei i nā mea .NET a me COM (Nā Mea Hou)
Nui nā ʻāpana lako polokalamu me ka .NET Core a me ka COM interface i pono i nā luna hoʻoponopono. Me ka hoʻohana ʻana i ka papa System.Diagnostics.EventLog, hiki iā ʻoe ke hoʻokele pololei i nā log system mai Windows PowerShell. E nānā i kahi laʻana o ka hana ʻana i kahi laʻana o kēia papa me ka hoʻohana ʻana i ka New-Object cmdlet me ka -TypeName parameter:
New-Object -TypeName System.Diagnostics.EventLog
No ka mea ʻaʻole mākou i kuhikuhi i kahi log hanana kūikawā, ʻaʻohe ʻikepili i ka hopena o ka papa. No ka hoʻololi i kēia, pono ʻoe e kāhea i kahi ʻano hana hana kūikawā i ka wā o kāna hana ʻana me ka hoʻohana ʻana i ka -ArgumentList parameter. Inā makemake mākou e komo i ka log noi, pono mākou e hāʻawi i ke kaula "Application" i mea hoʻopaʻapaʻa i ka mea kūkulu:
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
E ʻoluʻolu, ua mālama mākou i ka hopena o ke kauoha ma ka $AppLog variable. ʻOiai e hoʻohana mau ʻia nā pipeline ma ke ʻano pānaʻi, pono pinepine ka kākau ʻana i nā palapala i ka mālama ʻana i kahi kuhikuhi i kahi mea. Eia hou, aia nā papa kumu .NET Core i loko o ka namespace System: PowerShell ma ka paʻamau e nānā i nā ʻano kikoʻī i loko, no laila pololei ke kākau ʻana iā Diagnostics.EventLog ma kahi o System.Diagnostics.EventLog.
No ka hana me ka log, hiki iā ʻoe ke hoʻohana i nā ala kūpono:
$AppLog | Get-Member -MemberType Method
E ʻōlelo mākou ua hoʻomaʻemaʻe ʻia e ke ala Clear () inā loaʻa nā kuleana komo:
$AppLog.Clear()
Hoʻohana pū ʻia ka New-Object cmdlet e hana me nā ʻāpana COM. He nui loa ia mau mea - mai nā hale waihona puke i hoʻolako ʻia me ka Windows script server a hiki i nā polokalamu ActiveX, e like me Internet Explorer. No ka hana ʻana i kahi mea COM, pono ʻoe e hoʻonohonoho i ka -ComObject parameter me ka Programmatic ProgId o ka papa i makemake ʻia:
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
No ka hana ʻana i kāu mau mea ponoʻī me kahi hoʻolālā ʻokoʻa, ʻo ka hoʻohana ʻana i ka New-Object me he mea laha loa a paʻakikī; hoʻohana ʻia kēia cmdlet e hana me nā ʻāpana polokalamu ma waho o PowerShell. Ma nā ʻatikala e hiki mai ana e kūkākūkā nui ʻia kēia pilikia. Ma waho aʻe o nā mea .NET a me COM, e ʻimi pū mākou i nā mea CIM (WMI) a me ADSI.
Kāhea ʻana i nā ʻano Static
ʻAʻole hiki ke hoʻomaka koke ʻia kekahi mau papa .NET Core, me ka System.Environment a me System.Math. ʻo lākou
[System.Environment] | Get-Member
No ka ʻike ʻana i nā lālā static wale nō, e kāhea iā Get-Member me ka -Static parameter (e nānā i ke ʻano mea):
[System.Environment] | Get-Member -Static
No ke kiʻi ʻana i nā waiwai a me nā ʻano hana, e hoʻohana i ʻelua kolona ʻokoʻa ma mua o kahi manawa ma hope o ka literal:
[System.Environment]::OSVersion
ʻO
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
ʻAno PSCustomObject
Ma waena o nā ʻano ʻikepili he nui i loaʻa ma PowerShell, pono e haʻi ʻia ʻo PSCustomObject, i hoʻolālā ʻia no ka mālama ʻana i nā mea me kahi ʻano hana ʻole. ʻO ka hana ʻana i ia mea me ka New-Object cmdlet ua manaʻo ʻia he ʻano maʻamau, akā paʻakikī a me ka wā kahiko:
$object = New-Object –TypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
E nānā kākou i ke ʻano o ka mea:
$object | Get-Member
E hoʻomaka ana me PowerShell 3.0, loaʻa kekahi syntax:
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Hiki iā ʻoe ke komo i ka ʻikepili ma kekahi o nā ala like:
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
Eia kekahi laʻana o ka hoʻololi ʻana i ka hashtable i kekahi mea:
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
ʻO kekahi o nā hemahema o nā mea o kēia ʻano ʻo ia ka hiki ke hoʻololi i ke ʻano o kā lākou waiwai. No ka pale ʻana i kēia, pono ʻoe e hoʻohana i ke ʻano [kauoha]:
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Aia nā koho ʻē aʻe no ka hana ʻana i kahi mea: ma luna a mākou i nānā ai i ka hoʻohana ʻana i ka cmdlet
$object | Add-Member –MemberType NoteProperty –Name Age –Value 33
$object | Get-Member
ʻO ka cmdlet Add-Member hiki iā ʻoe ke hoʻohui i nā waiwai wale nō, akā i nā ʻano hana i kahi mea i hana mua ʻia ma ka hoʻohana ʻana i ka "-MemberType ScriptMethod" kūkulu:
$ScriptBlock = {
# код
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
E ʻoluʻolu, ua hoʻohana mākou i ka $ScriptBlock variable o ke ʻano ScriptBlock e mālama i ke code no ke ʻano hou.
No ka wehe ʻana i nā waiwai, e hoʻohana i ke ala kūpono:
$object.psobject.properties.remove('Name')
Ke hana nei i kāu mau papa ponoʻī
Ua hoʻolauna ʻo PowerShell 5.0 i ka hiki ke wehewehe
class MyClass
{
# тело класса
}
He ʻano .NET Core ʻoiaʻiʻo kēia, me kahi kino e wehewehe ana i kāna mau waiwai, nā ʻano hana, a me nā mea ʻē aʻe. E nānā kākou i kekahi laʻana o ka wehewehe ʻana i ka papa maʻalahi:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
No ka hana ʻana i kahi mea (class instance), e hoʻohana i ka cmdlet
$object = New-Object -TypeName MyClass
ai ole ia,
$object = [MyClass]::new()
E nānā kākou i ke ʻano o ka mea:
$object | Get-Member
Mai poina e pili ana i ka laulā: ʻaʻole hiki iā ʻoe ke kuhikuhi i kahi inoa ʻano ma ke ʻano he kaula a hoʻohana paha i kahi ʻano literal ma waho o ka palapala a i ʻole module kahi i wehewehe ʻia ai ka papa. I kēia hihia, hiki i nā hana ke hoʻihoʻi i nā manawa papa (nā mea) hiki ke loaʻa ma waho o ka module a i ʻole ka palapala.
Ma hope o ka hana ʻana i ka mea, hoʻopiha i kāna mau waiwai:
$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object
E hoʻomaopopo i ka wehewehe ʻana o ka papa ʻaʻole i nā ʻano waiwai wale nō, akā i kā lākou mau waiwai paʻamau:
class Example
{
[string]$Name = 'John Doe'
}
ʻO ka wehewehe ʻana o kahi ʻano papa e like me ka wehewehe ʻana i kahi hana, akā me ka hoʻohana ʻole ʻana i ka huaʻōlelo hana. E like me ka hana, hāʻawi ʻia nā ʻāpana i nā ala inā pono:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
#описание метода
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
I kēia manawa hiki i ka ʻelele o kā mākou papa ke ʻakaʻaka:
$object = [MyClass]::new()
$object.Smile($true)
Hiki ke hoʻonui ʻia nā ʻano hana; ʻo ia hoʻi, ua loaʻa i kahi papa
class MyClass2 : MyClass
{
#тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)
ʻO kā mākou wehewehe ʻana i ka hana ʻana me nā mea ma PowerShell ʻaʻole i pau. Ma nā puke e hiki mai ana, e hoʻāʻo mākou e hoʻohonu me nā hiʻohiʻona kūpono: ʻo ka ʻatikala ʻelima o ka moʻo e hoʻolaʻa ʻia i nā pilikia o ka hoʻohui ʻana i PowerShell me nā ʻāpana polokalamu ʻaoʻao ʻekolu. Hiki ke loaʻa nā ʻāpana i hala ma nā loulou ma lalo nei.
Source: www.habr.com