ααααααα’αααααααααΆααααααααΆαα
αααα»ααααα’α½α
α’ααααααααα 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 { Π±Π»ΠΎΠΊ ΡΡΠ΅Π½Π°ΡΠΈΡ }
ααααααααααΆαααααα·ααααα·αααα»αααααααΈααα αααα»αααααααα αααααΌαααααΆααααααααΌααΈαα ααααα·αααΎααΆααΆααΆααα·α ($true) ααααα»αααααααΌαααΆααααα αΌααα αααααα cmdlet ααααα»ααΉαααααΌαααΆαααααααΆααααΆαααααα ααΎαα·αααΌα αααααα ($false) ααΆααΉαααααΌαααΆααα»αα α§ααΆα ααα α αΌαααΎααααα αΆααααααΈααααααΆαααα Windows Server αααααααΌαααΆααααααα αααααΊα§α α’αααααΆααα‘αΆαααΆααααααααααααααααα·ααααΆαααΆαααααΌαααΆαααααααα ααΆ "αααααα"α
Get-Service | Where-Object {$_.Status -eq "Stopped"}
αα
ααΈααααααααααααΎαααΎαααααΆαα’αααααααα»ααααααααα·αααΎα’αααα
αααααααΈαααααααα·ααα
ααΆααααααααααΆααααα»αααααααα»αααααααααΆαααααααααΆαα·ααα·ααΆααα:
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
ααΆαααααααααααα»
αα αααααααΎαααΆαααααααααα αΌαααααα» ααΆααΏααα αΆαααΆα αααααΌααααααααα½αααΆα cmdlet αααααα Sort-Object ααααΌαβααΆαβαααααΌαβαααααβααβααααααααααααα· (ααααααβααααΆααα α»α ) α αΎαβαααα‘ααβααααα»βαααβααΆαβααααααβααΆαβαααααβααααβααΆα ααΆααΆααααα½ααααα»αααΆαααααααααααααααααααΎαααΆααααααααΎαααΆαααααααααααΆαααΈααΈααΌ (cpu property)α
Get-Process | Sort-Object βProperty cpu
αααΆαααΆαααααα -Property α’αΆα ααααΌαααΆααα»αα αααα αααα α cmdlet ααααααααααα»; ααΆααααΌαααΆαααααΎααΆαααααΆαααΎαα αααααΆααααΆααααααααααα αααΆα ααΌαααααΎαααΆαααΆαααααα -Descendingα
Get-Process | Sort-Object cpu -Descending
ααΆαααααΎαααΎαααααα»αα·ααααααααααααΆα
Select-Object cmdlet α’αα»ααααΆαα±ααα’αααααααΎαααΎαα ααα½αααΆααααΆααααααααα»αα ααΎα α¬α α»ααααα ααααααααααααααααΎαααΆαααΆαααααα -First α¬ -Last α αααααΆααααα½αααααααΆ α’αααα’αΆα ααααΎαααΎαααααα»αααα½α α¬αααααααααααααα·ααΆααααΆαα α αΎαααα’αΆα αααααΎαααααα»ααααΈαααααα’ααααΎαα½αααΆαααααα ααΌααααα‘ααααΎαααΈααααααα cmdlet ααααΎαααΆααααααααΎα§ααΆα αααααΆααααα
ααΆααααααααΆααΆαααααααααα αΆαααααααΆαα’αααΈααααΎαααΆαααΆαα 10 αααααααΎααααΆααα ααα½αα’αα·ααααΆαα RAM (αααααααααααααα· WS)α
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
α
αααΆαααΆ Select-Object αααα‘ααααααα»αααα½α (-First 1) αααααΆαααααΈαααααΆααααααΎαααΆααααααΆααα αααααααααααΆααααΌαααΆαα
ααααααΈααααα»ααΈαα½ααααααΆαα
αΌααα
αααα»ααααααααα cmdlet Get-Process α αα·ααΈαα½ααααα»αα
αααααα·ααΈααΎααααΈαααααΎαααααα»αααα»αααααααΈα PowerShell ααΊααα’ααααΎααΆαααααΎ Select-Objectα
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()
αααααααΎ Select-Object α’αααα’αΆα
ααααααααααααααααααα·αααααΆαααααΆαα
ααααα»αααααααΌαααΆαααααΆαααΆ
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}
ααΌααααα‘ααααΎααα
ααΆααααααααααααααα»αααααααααΆαα conveyor:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
ForEach-Object, Group-Object αα·α Measure-Object
ααΆα cmdlets αααααααααααααΆααααααΎααΆαααΆαα½αααααα»α ααΆα§ααΆα αααααΌααα·ααΆαα’αααΈααΈαααααΆααααααααααααα»α:
αααααΆααααααα»ααΈαα½αα α’αα»ααααΆαα±ααα’αααααααΎαααΆαααΌα PowerShell αααααΆααααααα»ααΈαα½αααα αααα»ααααααα
ForEach-Object { Π±Π»ΠΎΠΊ ΡΡΠ΅Π½Π°ΡΠΈΡ }
αααα»α-ααααα» αααα»αααααα»ααΆαααααααααααααααααααα·α
Group-Object PropertyName
ααααα·αααΎα’αααααααΎαααΆαααΆααΆαα½ααααΆαααΆαααααα -NoElement α’αααα’αΆα ααααΎαα ααα½αααΆαα»αα αααα»ααααα»αα
ααΆαααΆααααα - ααααα» ααα»αβαααΆαααΆααααααβααααααβααααααβααΆαβαααααβααΆαβααααα»βαααα»αβαααααβαααα αΌαβααααα (ααααΆβααααΌα α αΎαβααβααβααΎαβαααααβα’αααααααΆ α’αα·ααααΆ α¬βααααα)α
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
ααΆααααααΆ cmdlets αααααΆααα·ααΆααααΆααΊααααΌαααΆαααααΎααααΆααα’αααααααα α αΎαααΆααΏααααααΌαααΆααααααΎαααΆααααααΈαα
ααΆααααααΎαααααα» .NET αα·α COM (New-Object)
ααΆααααΆαααΆαα»αααααα·ααΈααΆα αααΎααααααΆαα ααα»α αααααΆαα .NET Core αα·α COM αααααΆααααααααααααααΆααα’ααααααααααααααααααααα αααααααΎααααΆαα System.Diagnostics.EventLog α’αααα’αΆα ααααααααααααααα ααα»αααααααααααααααΆααααΈ Windows PowerShell α ααΌααααα‘ααααΎαα§ααΆα αααααααΆααααααΎα instance αα class ααααααααααΎ New-Object cmdlet ααΆαα½αααΉααααΆαααΆαααααα -TypeNameα
New-Object -TypeName System.Diagnostics.EventLog
αααβααΆαβααΎαβαα·αβααΆαβαααααΆααβαααααβα ααα»βααααΉαααα·ααΆαααβααΆααβααΆαα αααβααααααβααβααααΆααβαα·αβααΆαβαα·ααααααβααα ααΎααααΈααααΆααααααΌαααΆ α’αααααααΌαα α
αα·ααΈααΆααααα constructor αα·αααααα‘α»αααααααααΎαααααααΆαααααααΎ -ArgumentList parameter α ααααα·αααΎααΎαα
ααα
αΌαααααΎαααααα ααα»αααααα·ααΈ ααΎααα½αααα α»α
ααααα’αααα "Application" ααΆα’αΆαα»ααααααα
α’αααααΆααααα
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
ααΌαα
αααΆαααΆααΎαααΆααααααΆαα»αααααααααααΆααααααααΆαα
αααα»αα’ααα $AppLog α αααααΈααΆαααααααααΌαααΆαααααΎααααΆααααΆααΌαα
αααα»αααααααα’ααααααααααααα ααΆααααααααααααΈαααΆααΏααααΆαααΆαα±αααααααΆα―αααΆαααααα
ααααα»αα½αα ααΎαααΈααα ααααΆααααααΌα .NET Core ααΆααα
αααα»α System namespaceα PowerShell ααΆαααααΆαααΎαααααΎααααααααααααΆααααααΆαααα
αααα»αααΆ ααΌα
ααααααΆαααααα Diagnostics.EventLog αααα½αα±αα System.Diagnostics.EventLog ααΊααααΉαααααΌαα
ααΎααααΈααααΎααΆαααΆαα½ααααααα ααα» α’αααα’αΆα ααααΎαα·ααΈααΆαααααααααααα
$AppLog | Get-Member -MemberType Method
α
αΌααα·ααΆαααΆααΆααααΌαααΆααααα’αΆαααααα·ααΈααΆααααα Clear() ααααα·αααΎααΆααα·αααα·α
αΌαααααΎα
$AppLog.Clear()
New-Object cmdlet ααααααΌαααΆαααααΎααΎααααΈααααΎααΆαααΆαα½ααααΆαααΆαα» COM αααααα ααΆααΆαα αααΎαααΆαα - ααΈαααααΆααααααααααααααααααΆαα½ααααΆαααΈαααααααααΈαααΈαααΌαα αααααα·ααΈ ActiveX ααΌα ααΆ Internet Explorer α ααΎααααΈαααααΎαααααα» COM α’αααααααΌαααααααααΆαααΆαααααα -ComObject ααΆαα½ααααααα·ααΈ ProgId ααααααΆαααααα ααααΆαα
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
ααΎααααΈαααααΎαααααα»ααααΆαααααα½αααααα’αααααΆαα½αααΉααα ααΆααααααααααΆαα’αααΎα α·ααα ααΆαααααΎ New-Object α αΆααααΌα ααΆα αΆααααα αα·ααααα»αααααΆαααα cmdlet αααααααΌαααΆαααααΎααΎααααΈααααΎααΆαααΆαα½αααααααααααΆααααα αα PowerShell α αα αααα»αα’αααααααΆαααα’ααΆαααααα αΆαααααΉαααααΌαααΆααα·ααΆααααΆαααα’α·ααααααααααα ααααααααΈααΎααααα» .NET αα·α COM ααΎαααααΉααα»αααααααα» CIM (WMI) αα·α ADSI αααααα
ααΆαα α αα·ααΈααΆααααααα·αα·αααα
ααααΆαα .NET Core αα½αα
ααα½ααα·αα’αΆα
ααααΎααααΆααααΆααα αα½αααΆαα System.Environment αα·α System.Mathα αα½αααβααΊ
[System.Environment] | Get-Member
ααΎααααΈβααΎαβααβαααΆαα·αβαα·αα·ααααβααα»ααααα ααΌαβα α
βαα
βααΆααβαααΆαα·αβαααβααααΎβαααΆαααΆαααααα -Static (α
αααΆαβααααααβααααα»)α
[System.Environment] | Get-Member -Static
ααΎααααΈα
αΌαααααΎαααααααααααααα· αα·ααα·ααΈααΆααααααα·αα·αααα ααΌαααααΎαααααΆααΈαααΆααααααΆαααα½αα±αααααααααααααΆααααΈααααααααα
[System.Environment]::OSVersion
α¬
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
ααΆα PSCustomObject
αααα»αα αααααααααααα·ααααααααΆα αααΎααααααΆααα αααα»α PowerShell ααΆααΆαααααααα·ααΆαα’αααΈ PSCustomObject αααααααΌαααΆααα ααΆα‘αΎααααααΆαααααααΆαα»αααααα»ααΆαα½αααΉααα ααΆααααααααααααΆαα ααΆααααααΎαααααα»αααααααααααααΎ New-Object 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
αααααΆα§ααΆα αααααααΆαααααααα hashable αααααΆαααααΆαααα ααΆααααα»α
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
αα»ααα·ααααα·αα½αααααααα»αααααααααααααΊααΆααααΆαααααααααααααααααα·αααααα½αααα’αΆα
ααααΆααααααΌαα ααΎααααΈαααααΆααααα αΆααα α’αααααααΌαααααααΎαα»ααααααα [ordered]α
$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 α’αα»ααααΆαα±ααα’ααααααααααααααααααααααα·αα·αααααΉαααααα»ααααααα ααα»αααααααααΆαααα·ααΈααΆααααααα
ααΆαα $object αααααΆααααααΎαααΈαα»ααααααααΎ "-MemberType ScriptMethod" constructα
$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 ααΆαα½ααααΆαααΆαα»αααααα·ααΈααΆααΈααΈααΈα αααααα’ααΈαααΆαα’αΆα ααααΆααα αααααΆααααααα
ααααα: www.habr.com