Ijade ọrọ ti awọn aṣẹ ni window onitumọ PowerShell jẹ ọna kan lati ṣafihan alaye ni fọọmu ti o baamu fun iwo eniyan. Nitootọ Wednesday
Atọka akoonu:
Awọn nkan ni PowerShell
Jẹ ki a ranti pe ohun kan jẹ akojọpọ awọn aaye data (awọn ohun-ini, awọn iṣẹlẹ, ati bẹbẹ lọ) ati awọn ọna fun ṣiṣe wọn (awọn ọna). Ilana rẹ jẹ pato nipasẹ iru kan, eyiti o da lori awọn kilasi ti a lo ninu ipilẹ .NET Core ti iṣọkan. O tun ṣee ṣe lati ṣiṣẹ pẹlu COM, CIM (WMI) ati awọn ohun ADSI. Awọn ohun-ini ati awọn ọna ni a nilo lati ṣe awọn iṣe lọpọlọpọ lori data; ni afikun, ni PowerShell, awọn nkan le kọja bi awọn ariyanjiyan si awọn iṣẹ ati awọn cmdlets, sọtọ awọn iye wọn si awọn oniyipada, ati pe tun wa.
Wiwo awọn be ti ohun
Fun apẹẹrẹ, jẹ ki a ṣiṣẹ Get-Process cmdlet, eyiti o fun ọ laaye lati gba alaye nipa awọn ilana ti n ṣiṣẹ ninu eto naa:
Yoo ṣe afihan diẹ ninu awọn data ọrọ akoonu ti ko fun eyikeyi imọran nipa awọn ohun-ini ti awọn nkan ti o pada ati awọn ọna wọn. Lati ṣe atunṣe iṣelọpọ, a nilo lati kọ ẹkọ bi a ṣe le ṣe ayẹwo igbekalẹ awọn nkan, ati cmdlet Get-Member yoo ṣe iranlọwọ fun wa pẹlu eyi:
Get-Process | Get-Member
Nibi a ti rii iru ati eto tẹlẹ, ati pẹlu iranlọwọ ti awọn paramita afikun a le, fun apẹẹrẹ, ṣafihan awọn ohun-ini ti nkan ti o wa ninu titẹ sii:
Get-Process | Get-Member -MemberType Property
Imọ yii yoo nilo lati yanju awọn iṣoro iṣakoso ni ibaraenisepo tabi lati kọ awọn iwe afọwọkọ tirẹ: fun apẹẹrẹ, lati gba alaye nipa awọn ilana ti a fikọ nipa lilo ohun-ini Idahun.
Sisẹ awọn nkan
PowerShell ngbanilaaye awọn nkan ti o pade ipo kan lati kọja nipasẹ opo gigun ti epo kan:
Where-Object { блок сценария }
Abajade ti ṣiṣe bulọọki iwe afọwọkọ laarin awọn akọmọ gbọdọ jẹ iye boolian kan. Ti o ba jẹ otitọ ($ otitọ), ohun ti o wa ni titẹ si Ibi-Object cmdlet yoo kọja pẹlu opo gigun ti epo, bibẹẹkọ ($ eke) yoo paarẹ. Fun apẹẹrẹ, jẹ ki a ṣe afihan atokọ ti awọn iṣẹ Windows Server ti o da duro, i.e. awọn ti a ṣeto ohun-ini Ipo si “Iduro”:
Get-Service | Where-Object {$_.Status -eq "Stopped"}
Nibi lẹẹkansi a rii aṣoju ọrọ, ṣugbọn ti o ba fẹ lati loye iru ati eto inu ti awọn nkan ti o kọja nipasẹ opo gigun ti epo ko nira:
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
Awọn nkan lẹsẹsẹ
Nigbati awọn ohun elo opo gigun ti epo, igbagbogbo nilo lati to wọn. cmdlet too-Ohun ti kọja awọn orukọ ti awọn ohun-ini (awọn bọtini yiyan) ati da awọn nkan pada ti a paṣẹ nipasẹ awọn iye wọn. O rọrun lati to awọn abajade ti awọn ilana ṣiṣe nipasẹ akoko Sipiyu ti o lo (ohun-ini cpu):
Get-Process | Sort-Object –Property cpu
paramita -Property le yọkuro nigbati o ba n pe cmdlet too-Object; o jẹ lilo nipasẹ aiyipada. Fun yiyatọ pada, lo paramita -Sokale:
Get-Process | Sort-Object cpu -Descending
Yiyan awọn nkan ati awọn ẹya wọn
cmdlet Yan-Nkan n gba ọ laaye lati yan nọmba kan pato ti awọn nkan ni ibẹrẹ tabi opin opo gigun ti epo nipa lilo awọn paramita -First tabi -Last. Pẹlu iranlọwọ rẹ, o le yan awọn ohun kan tabi awọn ohun-ini kan, ati tun ṣẹda awọn nkan tuntun ti o da lori wọn. Jẹ ki a wo bii cmdlet ṣe n ṣiṣẹ nipa lilo awọn apẹẹrẹ ti o rọrun.
Aṣẹ atẹle n ṣafihan alaye nipa awọn ilana 10 ti n gba iye ti o pọ julọ ti Ramu (ohun-ini WS):
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
O le yan awọn ohun-ini kan nikan ti awọn nkan ti o kọja nipasẹ opo gigun ti epo ati ṣẹda awọn tuntun ti o da lori wọn:
Get-Process | Select-Object ProcessName, Id -First 1
Bi abajade ti iṣiṣẹ opo gigun ti epo, a yoo gba ohun tuntun kan, eto eyiti yoo yatọ si eto ti o pada nipasẹ cmdlet Get-Process. Jẹ ki a ṣayẹwo eyi nipa lilo Gba-Ẹgbẹ:
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member
Ṣe akiyesi pe Yan-Nkan da ohun kan pada (-First 1) ti o ni meji nikan ninu awọn aaye ti a sọ pato: awọn iye wọn ni a daakọ lati ohun akọkọ ti o kọja sinu opo gigun ti epo nipasẹ Get-Process cmdlet. Ọkan ninu awọn ọna lati ṣẹda awọn nkan ni awọn iwe afọwọkọ PowerShell da lori lilo Yan-Nkan:
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()
Lilo Yan-Nkan, o le ṣafikun awọn ohun-ini iṣiro si awọn nkan ti o nilo lati ṣe aṣoju bi
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}
Jẹ ki a wo eto ti awọn nkan ti n kọja nipasẹ gbigbe:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
FunEach-Ohun, Ẹgbẹ-Nkan ati Idiwon-Nkan
Awọn cmdlets miiran wa fun ṣiṣẹ pẹlu awọn nkan. Fun apẹẹrẹ, jẹ ki a sọrọ nipa awọn mẹta ti o wulo julọ:
ForEach-Nkan gba ọ laaye lati ṣiṣẹ koodu PowerShell fun ohun kọọkan ninu opo gigun ti epo:
ForEach-Object { блок сценария }
Ẹgbẹ-Nkan awọn nkan ẹgbẹ nipasẹ iye ohun-ini:
Group-Object PropertyName
Ti o ba ṣiṣẹ pẹlu paramita -NoElement, o le wa nọmba awọn eroja ninu awọn ẹgbẹ.
Iwọn-Nkan ṣajọpọ ọpọlọpọ awọn paramita akojọpọ nipasẹ awọn iye aaye ohun elo ninu opo gigun ti epo (ṣe iṣiro apao, ati tun rii iye ti o kere julọ, o pọju tabi apapọ):
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
Ni deede, awọn cmdlets ti a sọrọ ni a lo ni ibaraenisepo, ati pe a ṣẹda nigbagbogbo ni awọn iwe afọwọkọ.
Ṣiṣẹda .NET ati awọn nkan COM (Ohun Tuntun)
Ọpọlọpọ awọn paati sọfitiwia pẹlu NET Core ati awọn atọkun COM ti o wulo fun awọn alabojuto eto. Lilo kilasi System.Diagnostics.EventLog, o le ṣakoso awọn igbasilẹ eto taara lati Windows PowerShell. Jẹ ki a wo apẹẹrẹ ti ṣiṣẹda apẹẹrẹ ti kilasi yii ni lilo cmdlet Nkan Tuntun pẹlu paramita -TypeName:
New-Object -TypeName System.Diagnostics.EventLog
Niwọn igba ti a ko ṣe pato iwe iṣẹlẹ iṣẹlẹ kan pato, apẹẹrẹ abajade ti kilasi ko ni data kankan. Lati yi eyi pada, o nilo lati pe ọna olupilẹṣẹ pataki lakoko ẹda rẹ nipa lilo paramita -ArgumentList. Ti a ba fẹ wọle si akọọlẹ ohun elo, o yẹ ki a kọja okun naa "Ohun elo" gẹgẹbi ariyanjiyan si olupilẹṣẹ:
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
Jọwọ ṣakiyesi pe a ṣafipamọ iṣẹjade ti aṣẹ naa ni oniyipada $AppLog. Botilẹjẹpe awọn opo gigun ti epo ni a lo nigbagbogbo ni ipo ibaraenisepo, awọn iwe afọwọkọ nigbagbogbo nilo mimu itọkasi si nkan kan. Ni afikun, awọn kilasi .NET Core mojuto wa ninu aaye orukọ System: PowerShell nipasẹ aiyipada n wa awọn oriṣi pato ninu rẹ, nitorinaa kikọ Diagnostics.EventLog dipo System.Diagnostics.EventLog jẹ deede.
Lati ṣiṣẹ pẹlu awọn log, o le lo awọn ọna ti o yẹ:
$AppLog | Get-Member -MemberType Method
Jẹ ki a sọ pe o ti parẹ nipasẹ ọna Clear() ti awọn ẹtọ iwọle ba wa:
$AppLog.Clear()
cmdlet Tuntun-Ohun tun jẹ lilo lati ṣiṣẹ pẹlu awọn paati COM. Pupọ ninu wọn lo wa - lati awọn ile-ikawe ti a pese pẹlu olupin iwe afọwọkọ Windows si awọn ohun elo ActiveX, bii Internet Explorer. Lati ṣẹda ohun COM kan, o nilo lati ṣeto paramita -ComObject pẹlu Eto eto ti kilasi ti o fẹ:
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
Lati ṣẹda awọn nkan tirẹ pẹlu eto lainidii, lilo Nkan Tuntun dabi ẹni pe o jọra pupọ ati wahala; cmdlet yii ni a lo lati ṣiṣẹ pẹlu awọn paati sọfitiwia ita si PowerShell. Nínú àwọn àpilẹ̀kọ tó ń bọ̀ lọ́jọ́ iwájú, a óò jíròrò àpilẹ̀kọ yìí ní ẹ̀kúnrẹ́rẹ́. Ni afikun si .NET ati awọn nkan COM, a yoo tun ṣawari CIM (WMI) ati awọn ohun ADSI.
Awọn ọna aimi pipe
Diẹ ninu awọn kilasi .NET Core ko le wa ni ese, pẹlu System.Environment ati System.Math. Wọn jẹ
[System.Environment] | Get-Member
Lati wo awọn ọmọ ẹgbẹ aimi nikan, pe Get-Member pẹlu paramita -Static (ṣe akiyesi iru ohun):
[System.Environment] | Get-Member -Static
Lati wọle si awọn ohun-ini aimi ati awọn ọna, lo awọn ileto itẹlera meji dipo akoko kan lẹhin ti gidi:
[System.Environment]::OSVersion
Tabi
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
Tẹ PSUStomObject
Lara awọn oriṣi data lọpọlọpọ ti o wa ni PowerShell, o tọ lati darukọ PSCustomObject, ti a ṣe apẹrẹ fun titoju awọn nkan pẹlu eto lainidii. Ṣiṣẹda iru nkan bẹẹ nipa lilo cmdlet Nkan Tuntun ni a ka si Ayebaye, ṣugbọn ọna ti o nira ati ti igba atijọ:
$object = New-Object –TypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
Jẹ ki a wo ilana ti nkan naa:
$object | Get-Member
Bibẹrẹ pẹlu PowerShell 3.0, sintasi miiran wa:
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
O le wọle si data ni ọkan ninu awọn ọna deede:
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
Eyi ni apẹẹrẹ ti iyipada hashtable ti o wa tẹlẹ si ohun kan:
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
Ọkan ninu awọn aila-nfani ti awọn nkan ti iru yii ni pe aṣẹ ti awọn ohun-ini wọn le yipada. Lati yago fun eyi, o gbọdọ lo abuda [paṣẹ]:
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Awọn aṣayan miiran wa fun ṣiṣẹda ohun kan: loke a wo ni lilo cmdlet
$object | Add-Member –MemberType NoteProperty –Name Age –Value 33
$object | Get-Member
cmdlet Fikun-Ẹgbẹ n gba ọ laaye lati ṣafikun kii ṣe awọn ohun-ini nikan, ṣugbọn awọn ọna si ohun $ ohun kan ti a ṣẹda tẹlẹ nipa lilo itumọ “-MemberType ScriptMethod”:
$ScriptBlock = {
# код
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
Jọwọ ṣe akiyesi pe a lo oniyipada $ScriptBlock ti iru ScriptBlock lati tọju koodu naa fun ọna tuntun.
Lati yọ awọn ohun-ini kuro, lo ọna ti o baamu:
$object.psobject.properties.remove('Name')
Ṣiṣẹda Awọn kilasi tirẹ
PowerShell 5.0 ṣafihan agbara lati ṣalaye
class MyClass
{
# тело класса
}
Eyi jẹ otitọ iru .NET Core, pẹlu ara ti o ṣe apejuwe awọn ohun-ini rẹ, awọn ọna, ati awọn eroja miiran. Jẹ ki a wo apẹẹrẹ ti asọye kilasi ti o rọrun julọ:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
Lati ṣẹda ohun kan (apẹẹrẹ kilasi), lo cmdlet
$object = New-Object -TypeName MyClass
tabi
$object = [MyClass]::new()
Jẹ ki a ṣe itupalẹ ọna ti nkan naa:
$object | Get-Member
Maa ko gbagbe nipa dopin: o ko ba le tọkasi lati a iru orukọ bi a okun tabi lo a iru gegebi ita iwe afọwọkọ tabi module ninu eyi ti awọn kilasi ti wa ni telẹ. Ni idi eyi, awọn iṣẹ le pada awọn iṣẹlẹ kilasi (awọn nkan) ti yoo wa ni ita module tabi iwe afọwọkọ.
Lẹhin ṣiṣẹda nkan naa, fọwọsi awọn ohun-ini rẹ:
$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object
Ṣe akiyesi pe apejuwe kilasi pato kii ṣe awọn iru ohun-ini nikan, ṣugbọn tun awọn iye aiyipada wọn:
class Example
{
[string]$Name = 'John Doe'
}
Apejuwe ti ọna kilasi jọ apejuwe iṣẹ kan, ṣugbọn laisi lilo ọrọ iṣẹ. Bi ninu iṣẹ kan, awọn paramita ti kọja si awọn ọna ti o ba jẹ dandan:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
#описание метода
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
Bayi aṣoju ti kilasi wa le rẹrin musẹ:
$object = [MyClass]::new()
$object.Smile($true)
Awọn ọna le jẹ apọju; ni afikun, kilasi kan ni
class MyClass2 : MyClass
{
#тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)
Apejuwe wa ti ṣiṣẹ pẹlu awọn nkan ni PowerShell ko nira. Ninu awọn atẹjade atẹle, a yoo gbiyanju lati jinlẹ pẹlu awọn apẹẹrẹ iwulo: nkan karun ninu jara yoo jẹ iyasọtọ si awọn ọran ti iṣakojọpọ PowerShell pẹlu awọn paati sọfitiwia ẹnikẹta. Awọn ẹya ti o ti kọja ni a le rii ni awọn ọna asopọ ni isalẹ.
orisun: www.habr.com