á PowerShell á áľá°ááá ááľáŽáľ ááľáĽ áŤáá á¨áľáĽááá˝ á¨á˝áá áá
ááľ áá¨áá áá°á áá
áĽááł á°áľáá á áá ááአá¨ááŤáłáŠá áľ ááááľ áĽáť ááᢠá áĽáááą áĽáŽáĽ
ááľáłááťáĄ
á PowerShell ááľáĽ áŤá áááŽá˝
á ááľ ááá á¨ááἠááľáŽá˝ (ááĽá¨áśá˝, ááľá°áśá˝, ááá°) áĽá áĽááąá áááľáŹáľ áá´áá˝ (áá´áá˝) áľáĽáľáĽ áááá áĽááľáłááľ. á áááአá á áááľ ááááťáᣠáĽáąá á áĽáááá áá á á°ááá° .NET Core ááľá¨á áá á ááááá áááá˝ áá á¨á°áá°á¨á° ááᢠáĽáá˛áá ᨠCOM, CIM (WMI) áĽá ADSI áááŽá˝ áá ááľáŤáľ ááťáá. á áá¨á áá á¨á°ááŤáŠ áĽááááá˝á ááá¨ááá áŁá
áŞáá˝ áĽá áá´áá˝ áŤáľáááá ᣠá á°á¨ááŞá ᣠá PowerShell ááľáĽ ᣠáááŽá˝ áá° á°ááŁáŤáľ áĽá cmdlets áĽáá° áááá áá°ááá áá˝áá ᣠáĽá´áśáťá¸áá áá°ááááŽá˝ ááá°áŁá ᣠáĽá áĽáá˛á á á
á¨áááŽá˝á ááá á áááá¨áľ
áááłá á á˛áľá°á ááľáĽ áľááá°áŠ áá°áśá˝ áá¨á áĽáá˛áŤáá á¨ááŤáľá˝áááľá Get-Process cmdlet áĽáááąáĄ-
áľáá°áááąáľ áááŽá˝ áŁá
áŞáŤáľ áĽá áľá áá´ááťá¸á ááá á áááľ ááłáĽ á¨ááá°áĽ á ááłááľ á¨á°áá¨á¸ á¨á˝áá ááἠáŤáłáŤáᢠáá¤áąá áááľá°áŤá¨á á¨áááŽá˝á á áááá áĽáá´áľ ááááá áĽááłááĽá ááá á ááĽá ᣠáĽá Get-Member cmdlet á áá
áá áá¨áłáá-
Get-Process | Get-Member
áĽáá
ááľááá ááááľ áĽá á ááááŠá á áá°áá ᣠáĽá á°á¨á᪠áááŞáŤáá˝á á áá áá ᣠáááłá ᣠá áá¤áľ ááľáĽ á¨á°áŤá°á°áá á¨ááĽá¨áąá áŁá
᪠áĽáť ááłá¨áľ áĽáá˝ááá-
Get-Process | Get-Member -MemberType Property
áá áĽáááľ á¨á áľá°áłá°á á˝ááŽá˝á á ááá°ááá ááááłáľ ááá á¨áŤáľáá áľááŞááśá˝ áááá áŤáľááááᥠáááłá ááá˝ á°áŞ ááĽá¨áľá á áá áá áľáá°á°áá áá°áśá˝ áá¨á áááááľá˘
áááá˝á ááŁáŤáľ
PowerShell á ááľá á áľá áááł á¨ááŤáá áááŽá˝ á á§á᧠áĽáá˛á°ááá ááá áłááĄ-
Where-Object { йНОк ŃŃонаŃĐ¸Ń }
á á áá ááľáĽ á¨áľááŞááľ áĽááłá á¨ááľáá¸á áá¤áľ á¨áŚááŤá áĽá´áľ ááá á áá áľá˘ áĽáááľ (áĽáááľ á¨áá) áá° á¨áľ-ááá cmdlet áá¤áľ áŤáá ááá á á§á᧠ááľáá áá áá°ááááᣠá áá áá፠(áá°áľ) áá°á¨ááᢠáááłáᣠá¨áááľá á¨áááśááľ á áááá á áááááśá˝á áááá áĽááłáᢠááĽá¨áłá¸á áá° âááâ á¨á°ááá á¨ááĄ-
Get-Service | Where-Object {$_.Status -eq "Stopped"}
áĽáá
áĽáá°áá á¨á˝áá áááá áĽááŤáá, ááá áá á á§áá§á ááľáĽ á¨ááŤáááľá áááŽá˝ á áááľ áĽá ááľáŁá ááá
á ááá¨áłáľ á¨ááá á áľá¸á᪠á áá°áá.
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
áááá˝á áá°áá°á
á¨á§á᧠ááľáá áááá˝á á áá áŠá áľ áá áĽááá áá áĽááąá áá°áá°á áŤáľáááá. á°ááľá-ááá cmdlet á¨ááĽá¨áśá˝ áľáá˝ á°áááá (á¨áá°áá°á áááá˝) áĽá á áĽá´áłá¸á á¨áłáá áááá˝á ááááłáᢠá¨áá°áąá áá¤áľ á á˛áአáá áŁá áá (á˛áአááĽá¨áľ) áá°áá°á ááá ááá˘
Get-Process | Sort-Object âProperty cpu
á¨-Property áááŞáŤ áá° á°ááľá-ááá cmdlet á˛á°áá áá°á ááťááᤠá ááŁáŞááľ áĽá á áá ááááᢠáá°ááá˘áŚá˝ áá°áá°áᣠááá¨áľ áááŞáŤáá áá áááĄ-
Get-Process | Sort-Object cpu -Descending
áááá˝á áĽá ááááťá¸áá ááá¨áĽ
ᨠSelect-Object cmdlet á¨á§á᧠ááľáá ááááŞáŤ ááá áá¨á¨áť áá -First ááá -Last áááŞáŤáá˝á á áá áá á¨á°áá°á á¨áááŽá˝á áĽááľ áĽáá˛ááᥠáŤáľá˝áááłáᢠá áĽáą áĽááłáł áá á áĽááá˝á ááá á¨á°áá°á ááĽá¨áśá˝á ááá¨áĽ áá˝áá, áĽáá˛áá á áĽááą áá á áááľá¨áľ á á˛áľ áĽááá˝á ááá á áá˝áá. ááá ááłááá˝á á áá áá cmdlet áĽáá´áľ áĽáá°áá°áŤ áĽáááá¨áľ.
á¨áá¨á°áá áľááá á¨áá°ááá ᨠRAM (WS á ááĽá¨áľ) áľááá ááľ 10 áá°áśá˝ áá¨á áŤáłáŤáá˘
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
á á§áá§á ááľáĽ á¨ááŤáá áááŽá˝ á¨á°áá°á áŁá
áŞáŤáľá áĽáť ááá¨áĽ áĽá á áĽááą áá á áááľá¨áľ á á˛áľ ááá á áá˝áá-
Get-Process | Select-Object ProcessName, Id -First 1
á á§áá§á á á áŤá ááááŤáľ, á á˛áľ ááá áĽááá ááá, á áááአá Get-Process cmdlet á¨á°ááá°á ááá á áááŤá. Get-Memberá á áá áá áá áá áĽáá¨áááĽáĄ-
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member
á¨ááá˝áá¸á ááľáŽá˝ ááľáĽ áááą áĽáť áŤáá¸áá á ááľ ááá (-á áá°á 1) áá¨áĽ-áááá áĽáá°ááááľ áἠáá áᥠáĽá´áłá¸á á¨á°ááłá á¨ááááŞáŤá ááá á Get-Process cmdlet áá° á§áá§á á¨á°áááá ááá ááᢠá PowerShell áľááŞááśá˝ ááľáĽ áááá˝á á¨ááá á ááááśá˝ á ááą áá¨áĽ-áááá á áá áá áá á¨á°áá á¨á° ááá˘
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()
áá¨áĽ-áááá á áá ááᣠáĽáá° ááá¨á á ááŤáľáááá¸á áááŽá˝ áá á¨á°áá አááĽá¨áśá˝á áá¨á áá˝ááá˘
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}
á ááááŁá ááľáĽ á¨ááŤáá áááá˝á á áááá áĽáááá¨áľ-
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
ááĽáŤááłááą-ááá, áĄáľá-ááá áĽá áááŞáŤ-ááá
á¨áĽááá˝ áá áááľáŤáľ ááá˝ cmdlets á áᢠáĽáá° ááłáᣠá áŁá á áá áľááááľ áŚáľáą áĽáááááá˘
ááĽáŤááłááą-ááá á á§áá§á ááľáĽ ááá áĽáŤááłááą ááá ᨠPowerShell áŽáľ áĽáá˛áŤááą ááá áľáááłá-
ForEach-Object { йНОк ŃŃонаŃĐ¸Ń }
áĄáľá-ááá áĄáľáá˝ á ááĽá¨áľ áá:
Group-Object PropertyName
á -NoElement áááŞáŤ áŤáŤááąáľ á áĄáľááš ááľáĽ áŤááľá á¨ááĽá¨ áááŽá˝ áĽááľ ááá áá˝áá.
áááŞáŤ-ááá á á§áá§á ááľáĽ áŁá á¨ááá ááľá áĽá´áśá˝ á¨á°ááŤáŠ áá áá፠áááŞáŤáá˝á áŤá ááá ( áľááŠá áŤá°áá áĽá áĽáá˛áá áá á°ááá ᣠá¨áá°ááá ááá á ááŤá áĽá´áľá áŤááá)
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
á á°áááśáŁ á¨á°áĽáŤáŠáľ cmdlets á ááá°ááá áĽá
á áá ááááᣠáĽá áĽá áá á áľááŞááśá˝ ááľáĽ ááá áŤáá˘
NET áĽá COM áááá˝á ááá á (á á˛áľ-ááá)
ááľáááľ á áľá°áłáłáŞáá˝ á áá á¨áá ᨠNET Core áĽá COM á áááá˝ áá áĽá á¨áśááľáá áááá˝ á áᢠá¨System.Diagnostics.EventLog áááá á áá áá á¨áľáááľ áááἠááľáłááťáá˝á á¨áááśááľ ááá áźá á ááĽáł ááľá°áłá°á áá˝ááᢠá á˛áąá ááá cmdlet ᨠ-TypeName áááŞáŤ áá á áá áá á¨áá á ááá ááłá á¨ááá á ááłáá áĽáááá¨áľáĄ-
New-Object -TypeName System.Diagnostics.EventLog
á¨á°áá°á á¨ááľá°áľ áááἠááľáłááť áľááááá
á á¨ááá á¨áá¤áľ ááłá ááá ááἠá ááŤááᢠáá
áá ááááἠᨠ-ArgumentList áááŞáŤá á áá áá á ááá áá áľ áá áአá¨áááŁáł áá´á áá°áá áŤáľáááááłá. á¨áááá¨áť áááἠááľáłááťáá ááľá¨áľ á¨áááá âáá°áá áŞáŤâ á¨áááá ááĽá¨ááá áĽáá° áááá áááá˘á áĽááľá°ááááááĄ-
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
áĽáŁááá á¨áľáááá áá¤áľ á $AppLog á°áááá ááľáĽ áĽááłáľáááĽá áἠáá áᢠááá áĽááłá á¨á§á᧠ááľááŽá˝ á á°áááś á ááá°ááá áááł áĽá
á áá á¨ááá á˘ááá, áľááŞááśá˝á ááťá áĽááá áá á¨á ááľá ááá ááŁááť áá á á
á áá ááá. á á°á¨ááŞá á¨áŽá .NET Core áááá˝ á á˛áľá°á á¨áľá áŚáł ááľáĽ ááááᥠááá áźá á ááŁáŞááľ á ááľáĄ á¨á°áááš á áááśá˝á áááááᣠáľááá
á System.Diagnostics.EventLog ááľá Diagnostics.EventLog ááá á áŁá áľááá ááá˘
á¨áááἠááľáłááťá áá áááľáŤáľ á°áá˘áá áá´áá˝ áá áá áá˝áá-
$AppLog | Get-Member -MemberType Method
á¨ááłá¨áť ááĽáśá˝ áŤá á Clear() áá´ á¸áľáˇá áĽáá ááĄ-
$AppLog.Clear()
á á˛áą-ááá cmdlet áĽáá˛á ᨠCOM á áŤááľ áá áááľáŤáľ áĽá á áá ááááᢠá áŁá áĽá áá¸á - á¨áááśááľ áľááŞááľ á áááá áá á¨ááááĄáľ á¤á°-áá˝áááľ áĽáľá¨ á áá˛áá¤ááľ á áááŹá˝áá˝ áááłá á˘áá°áááľ á¤ááľááá¨áᢠᨠCOM áááá áááá á ᨠComObject áááŞáŤá á¨ááááá ááá ááŽááŤáá ááŽáá ááľ áá áááááľ áŤáľáááááłááĄ-
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
á¨áĽáŤáľáá áĽááá˝ á áááá° ááá á áááá á á á˛áľ-áááá á áá áá á áŁá áĽááłá áĽá á áľá¸á᪠áááľáá ᣠáá cmdlet á¨ááá áźá áá áŤá á¨áśááľáá á áŤááľ áá áááľáŤáľ áŤáááááᢠá áááĽááľ á˝ááá˝ áá ááłá á á áá áááá ááĽáŤáŤá. ᨠNET áĽá COM áááŽá˝ á á°á¨á᪠CIM (WMI) áĽá ADSI áááŽá˝á áĽáááááá˘
á¨áááááἠáá´áá˝á ááĽáŤáľ
á ááłáᾠᨠ.NET Core áááá˝ á˛áľá°á.á˘ááŤááŽááááľ áĽá á˛áľá°á. ááľá á¨áᎠá á
á˝á áľ áá°á¨á á áá˝ááᢠáá¸á
[System.Environment] | Get-Member
á¨áááááłááą á áŁááľá áĽáť ááá¨áľáŁ á -Static áááŞáŤ áá Get-Memberá áá°áá (á¨áááŠá á áááľ áἠáá á)
[System.Environment] | Get-Member -Static
á¨áááááłááą ááĽá¨áśá˝á áĽá áá´áá˝á áááááľáŁ á¨áľááááá áá á áá áááľ á°á¨áłáłá áŽáá áá áááĄ-
[System.Environment]::OSVersion
ááá
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
PSUStomObject áá°ááĄ
á PowerShell ááľáĽ á¨ááááľ á ááŤáł á¨áá¨á á áááśá˝ ááŤá¨áᣠá áááá° ááá á áááŽá˝á ááá¨áá¸áľ á¨á°áá°ááá PSCustomObject ááĽááľ á°áᢠááᢠá á˛áľ-ááá cmdletá á áá áá áĽáá˛á ááááąá ááá ááá á áĽáá° ááá˛á ᣠáá á áľá¸á᪠áĽá áá áŤááá áľ ááááľ ááá áŤáá˘
$object = New-Object âTypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
á¨áááá á ááááŠá áĽáááá¨áľáĄ-
$object | Get-Member
á¨PowerShell 3.0 áááŽáŁ áá á ááŁáĽ á ááĄ-
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
áááĄá á¨á°ááłáłá ááááśá˝ á á ááą ááááľ áá˝áááĄ-
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
ááŁáŠá áá˝áłáĽá áá° áá á¨ááá¨á ááłá áá¸áááĄ
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
á¨áá
á áááľ áĽááá˝ á¨ááŤáľá¨áľáá¸á ááłáśá˝ á ááą á¨ááĽá¨áłá¸á á
á°á á°á¨á°á áááἠáá˝áá. áá
áá áááľáá¨áľáŁ [á¨áłáá] áŁá
áŞá áá áá á ááŚáľáĄ-
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
á ááľá ááá áááá á ááá˝ á ááŤáŽá˝ á áᥠá¨áá cmdlet á á°á á
áá á°áááá°áá
$object | Add-Member âMemberType NoteProperty âName Age âValue 33
$object | Get-Member
ᨠAdd-Member cmdlet á¨"-MemberType ScriptMethod" áááŁáłá á áá áá ááĽá¨áśášá áĽáť áłááá ááľá á á°áá ᨠ$object áá áĽáá˛á¨áአáŤáľá˝áááłáá˘
$ScriptBlock = {
# кОд
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
áĽáŁáá áá á˛áą áá´ áŽáąá áááľááἠá¨$ScriptBlock á áááľ ScriptBlock á°á áááá˘
ááĽá¨áśá˝á áááľáááľ á°ááłá áá´á áá áá-
$object.psobject.properties.remove('Name')
á¨áŤáľáá áááá˝ ááá á
PowerShell 5.0 á¨áááá˝ á˝ááłá á áľá°ááá
class MyClass
{
# ŃоНО кНаŃŃĐ°
}
áá áĽááá°á .NET Core á áááľ ááᣠáŁá áŞáŤáąáᣠáľááśášá áĽá ááá˝ á áŤááľá á¨áááá˝ á áŤá áŤááᢠá áŁá áááá ááá á¨ááá፠ááłá áĽáááá¨áľáĄ-
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
á ááľ ááá áááá á (á¨ááá ááłá) cmdlet áá áá
$object = New-Object -TypeName MyClass
ááá
$object = [MyClass]::new()
á¨áááá á ááááŠá áĽááááááĄ-
$object | Get-Member
áľá áá°á á áľááłáĄ á¨á ááľá á áááľ áľá áĽáá° ááĽá¨ááá ááĽááľ á áľá˝áá ááá ááá á¨á°ááá¸á áľ áľááŞááľ ááá ááá áá áá á áá á áááľ áá áá á áľá˝ááᢠá áá
á ááŁá á°ááŁáŤáľ á¨ááá ááá áľááŞááľ áá ááá á¨áá˝á á¨ááá ááłááá˝á (áááŽá˝á) ááááľ áá˝ááá˘
áĽááá á¨áá አá áá áŁá áŞáŤáąá ááá:
$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object
á¨ááá ááááŤá á¨ááĽá¨áľ ááááśá˝á áĽáť áłááá ááŁáŞ áĽá´áśáťá¸ááá áĽáá°áááá˝ áἠáá áá˘
class Example
{
[string]$Name = 'John Doe'
}
á¨ááá áá´ ááááŤá á¨á ááľ á°ááŁá ááááŤá áááľáá, ááá áá á¨á°ááŁá ááá áłáá áá. áĽáá° á ááľ á°ááŁá ᣠá áľááá á¨áá áááŞáŤáá˝ áá° áá´áá˝ áá°ááááá˘
class MyClass
{
[string]$Name
[string]$City
[string]$Country
#ОпиŃанио ПоŃОда
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
á áá á¨áĽá ááá á°ááŤá ááá áááľ áá˝áá-
$object = [MyClass]::new()
$object.Smile($true)
áá´áá˝ á¨áá á á áá ááŤá áá˝áá, á á°á¨ááŞá, á ááľ ááá á áá
class MyClass2 : MyClass
{
#ŃоНО нОвОгО кНаŃŃĐ°, йаСОвŃĐź Đ´ĐťŃ ĐşĐžŃĐžŃОгО ŃвНŃĐľŃŃŃ MyClass
}
[MyClass2]::new().Smile($true)
á PowerShell ááľáĽ áŤá áááŽá˝ áá áľáááĽáŤáľ áŤáá ááá፠áĽáá á áŤáá áᢠá áááĽááľ á áľááśá˝ ááľáĽ á á°ááŁáŤá ááłááá˝ áĽáá áááľá¨á áĽááááŤáá-á á°á¨áłáłáŠ ááľáĽ á ááľá°áá ááŁáĽá PowerShellá á¨áśáľá°á ááá á¨áśááľáá á áŤááľ áá á ááááľ ááłáŽá˝ áá áŤá°áŠáŤá ᢠáŤáá áááá˝ á¨áłá˝ áŁáá áááá áá ááááá˘
ááá: hab.com