PowerShell ã€ã³ã¿ãŒããªã¿ãŒ ãŠã£ã³ããŠã§ã®ã³ãã³ãã®ããã¹ãåºåã¯ã人éã®èªèã«é©ãã圢åŒã§æ
å ±ã衚瀺ããããã®åãªãæ¹æ³ã§ãã å®ã¯æ°Žææ¥
ç®æ¬¡ïŒ
PowerShell ã®ãªããžã§ã¯ã
ãªããžã§ã¯ãã¯ããŒã¿ ãã£ãŒã«ã (ããããã£ãã€ãã³ããªã©) ãšããããåŠçããããã®ã¡ãœãã (ã¡ãœãã) ã®ã³ã¬ã¯ã·ã§ã³ã§ããããšãæãåºããŠãã ããã ãã®æ§é ã¯åã«ãã£ãŠæå®ãããŸããåã¯éåžžãçµ±å .NET Core ãã©ãããã©ãŒã ã§äœ¿çšãããã¯ã©ã¹ã«åºã¥ããŠããŸãã COMãCIM (WMI)ãããã³ ADSI ãªããžã§ã¯ããæäœããããšãã§ããŸãã ããŒã¿ã«å¯ŸããŠããŸããŸãªã¢ã¯ã·ã§ã³ãå®è¡ããã«ã¯ãããããã£ãšã¡ãœãããå¿
èŠã§ããããã«ãPowerShell ã§ã¯ããªããžã§ã¯ããé¢æ°ãã³ãã³ãã¬ããã«åŒæ°ãšããŠæž¡ãããã®å€ãå€æ°ã«å²ãåœãŠãããšãã§ããŸãã
ãªããžã§ã¯ãã®æ§é ã衚瀺ãã
ããšãã°ãGet-Process ã³ãã³ãã¬ãããå®è¡ããŠã¿ãŸããããããã«ãããã·ã¹ãã ã§å®è¡ãããŠããããã»ã¹ã«é¢ããæ å ±ãååŸã§ããŸãã
è¿ããããªããžã§ã¯ããšãã®ã¡ãœããã®ããããã£ã«ã€ããŠã¯äœãåãããªããæžåŒèšå®ãããããã¹ã ããŒã¿ã衚瀺ãããŸãã åºåã埮調æŽããã«ã¯ããªããžã§ã¯ãã®æ§é ã調ã¹ãæ¹æ³ãåŠã¶å¿
èŠããããŸããGet-Member ã³ãã³ãã¬ããã¯ããã«åœ¹ç«ã¡ãŸãã
Get-Process | Get-Member
ããã§ã¯ãã§ã«åãšæ§é ã衚瀺ãããŠãããè¿œå ã®ãã©ã¡ãŒã¿ãŒã䜿çšãããšãããšãã°ãå
¥åã«å«ãŸãããªããžã§ã¯ãã®ããããã£ã®ã¿ã衚瀺ã§ããŸãã
Get-Process | Get-Member -MemberType Property
ãã®ç¥èã¯ã管çäžã®åé¡ã察話çã«è§£æ±ºããããç¬èªã®ã¹ã¯ãªãããäœæãããããå Žåã«å¿ èŠã«ãªããŸããããšãã°ãResponding ããããã£ã䜿çšããŠãã³ã°ããããã»ã¹ã«é¢ããæ å ±ãååŸããå Žåãªã©ã§ãã
ãªããžã§ã¯ãã®ãã£ã«ã¿ãªã³ã°
PowerShell ã§ã¯ãç¹å®ã®æ¡ä»¶ãæºãããªããžã§ã¯ãããã€ãã©ã€ã³çµç±ã§æž¡ãããšãã§ããŸãã
Where-Object { блПк ÑÑеМаÑÐžÑ }
æ¬åŒ§å ã®ã¹ã¯ãªãã ãããã¯ã®å®è¡çµæã¯ããŒã«å€ã§ãªããã°ãªããŸããã true ($true) ã®å ŽåãWhere-Object ã³ãã³ãã¬ããã«å ¥åããããªããžã§ã¯ãã¯ãã€ãã©ã€ã³ã«æ²¿ã£ãŠæž¡ããããã以å€ã®å Žå ($false) ã¯åé€ãããŸãã ããšãã°ãåæ¢ãã Windows Server ãµãŒãã¹ã®ãªã¹ãã衚瀺ããŠã¿ãŸãããã Status ããããã£ããStoppedãã«èšå®ãããŠãããã®:
Get-Service | Where-Object {$_.Status -eq "Stopped"}
ããã§ãããã¹ãè¡šçŸã瀺ãããŠããŸããããã€ãã©ã€ã³ãééãããªããžã§ã¯ãã®ã¿ã€ããšå
éšæ§é ãç解ãããå Žåã¯ãããã»ã©é£ãããããŸããã
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
ãªããžã§ã¯ãã®äžŠã¹æ¿ã
ãªããžã§ã¯ãããã€ãã©ã€ã³åŠçããå Žåãå€ãã®å Žåããªããžã§ã¯ãã䞊ã¹æ¿ããå¿ èŠããããŸãã Sort-Object ã³ãã³ãã¬ããã«ã¯ãããããã£ã®åå (䞊ã¹æ¿ãããŒ) ãæž¡ããããã®å€ã®é ã«äžŠã¹ããããªããžã§ã¯ããè¿ãããŸãã å®è¡äžã®ããã»ã¹ã®åºåããè²»ããã CPU æé (cpu ããããã£) ããšã«ç°¡åã«äžŠã¹æ¿ããããšãã§ããŸãã
Get-Process | Sort-Object âProperty cpu
-Property ãã©ã¡ãŒã¿ãŒã¯ãSort-Object ã³ãã³ãã¬ãããåŒã³åºããšãã«çç¥ã§ããŸããæ¢å®ã§äœ¿çšãããŸãã éãœãŒãã®å Žåã¯ã-Descending ãã©ã¡ãŒã¿ã䜿çšããŸãã
Get-Process | Sort-Object cpu -Descending
ãªããžã§ã¯ããšãã®ããŒãã®éžæ
Select-Object ã³ãã³ãã¬ããã䜿çšãããšã-First ãã©ã¡ãŒã¿ãŒãŸã㯠-Last ãã©ã¡ãŒã¿ãŒã䜿çšããŠããã€ãã©ã€ã³ã®æåãŸãã¯æåŸã§ç¹å®ã®æ°ã®ãªããžã§ã¯ããéžæã§ããŸãã ãããå©çšãããšãåäžã®ãªããžã§ã¯ããŸãã¯ç¹å®ã®ããããã£ãéžæãããããããã«åºã¥ããŠæ°ãããªããžã§ã¯ããäœæãããã§ããŸãã ç°¡åãªäŸã䜿çšããŠãã³ãã³ãã¬ãããã©ã®ããã«æ©èœããããèŠãŠã¿ãŸãããã
次ã®ã³ãã³ãã¯ãRAM ã®æ倧éãæ¶è²»ããŠãã 10 åã®ããã»ã¹ã«é¢ããæ å ±ã衚瀺ããŸã (WS ããããã£)ã
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
ãã€ãã©ã€ã³ãééãããªããžã§ã¯ãã®ç¹å®ã®ããããã£ã®ã¿ãéžæãããããã«åºã¥ããŠæ°ããããããã£ãäœæã§ããŸãã
Get-Process | Select-Object ProcessName, Id -First 1
ãã€ãã©ã€ã³ã®æäœã®çµæãæ°ãããªããžã§ã¯ããåãåããŸãããã®æ§é ã¯ãGet-Process ã³ãã³ãã¬ããã«ãã£ãŠè¿ãããæ§é ãšã¯ç°ãªããŸãã Get-Member ã䜿çšããŠããã確èªããŠã¿ãŸãããã
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member
Select-Object ã¯ãæå®ãããã£ãŒã«ãã®ãã¡ 1 ã€ã ããæã€åäžã®ãªããžã§ã¯ã (-First XNUMX) ãè¿ãããšã«æ³šæããŠãã ããããããã®å€ã¯ãGet-Process ã³ãã³ãã¬ããã«ãã£ãŠãã€ãã©ã€ã³ã«æž¡ãããæåã®ãªããžã§ã¯ãããã³ããŒããããã®ã§ãã PowerShell ã¹ã¯ãªããã§ãªããžã§ã¯ããäœæããæ¹æ³ã® XNUMX ã€ã¯ã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}}
ã³ã³ãã¢ãééãããªããžã§ã¯ãã®æ§é ãèŠãŠã¿ãŸãããã
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
ForEach-ObjectãGroup-Objectãããã³ Measure-Object
ãªããžã§ã¯ããæäœããããã®ã³ãã³ãã¬ããã¯ä»ã«ããããŸãã äŸãšããŠãæã圹ç«ã€ XNUMX ã€ã«ã€ããŠèª¬æããŸãã
ForEach-ãªããžã§ã¯ã ãã€ãã©ã€ã³å ã®åãªããžã§ã¯ãã«å¯Ÿã㊠PowerShell ã³ãŒããå®è¡ã§ããŸãã
ForEach-Object { блПк ÑÑеМаÑÐžÑ }
ã°ã«ãŒããªããžã§ã¯ã ãªããžã§ã¯ããããããã£å€ããšã«ã°ã«ãŒãåããŸãã
Group-Object PropertyName
-NoElement ãã©ã¡ãŒã¿ãŒãæå®ããŠå®è¡ãããšãã°ã«ãŒãå ã®èŠçŽ ã®æ°ã確èªã§ããŸãã
ã¡ãžã£ãŒãªããžã§ã¯ã ãã€ãã©ã€ã³å ã®ãªããžã§ã¯ã ãã£ãŒã«ãå€ããšã«ããŸããŸãªãµããªãŒ ãã©ã¡ãŒã¿ãŒãéèšããŸã (åèšãèšç®ããæå°å€ãæ倧å€ããŸãã¯å¹³åå€ãèŠã€ããŸã)ã
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
éåžžãããã§èª¬æããã³ãã³ãã¬ããã¯å¯Ÿè©±çã«äœ¿çšãããã¹ã¯ãªããã§äœæãããããšããããããŸãã
.NET ããã³ COM ãªããžã§ã¯ãã®äœæ (æ°èŠãªããžã§ã¯ã)
ã·ã¹ãã 管çè ã«ãšã£ãŠåœ¹ç«ã€ã.NET Core ããã³ COM ã€ã³ã¿ãŒãã§ã€ã¹ãåãããœãããŠã§ã¢ ã³ã³ããŒãã³ããå€æ°ãããŸãã System.Diagnostics.EventLog ã¯ã©ã¹ã䜿çšãããšãWindows PowerShell ããçŽæ¥ã·ã¹ãã ãã°ã管çã§ããŸãã -TypeName ãã©ã¡ãŒã¿ãŒãæå®ãã New-Object ã³ãã³ãã¬ããã䜿çšããŠããã®ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããäŸãèŠãŠã¿ãŸãããã
New-Object -TypeName System.Diagnostics.EventLog
ç¹å®ã®ã€ãã³ã ãã°ãæå®ããªãã£ããããçµæã®ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã«ã¯ããŒã¿ãå«ãŸããŸããã ãããå€æŽããã«ã¯ãäœæäžã« -ArgumentList ãã©ã¡ãŒã¿ãŒã䜿çšããŠç¹å¥ãªã³ã³ã¹ãã©ã¯ã¿ãŒ ã¡ãœãããåŒã³åºãå¿
èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³ ãã°ã«ã¢ã¯ã»ã¹ãããå Žåã¯ãæååãApplicationããåŒæ°ãšããŠã³ã³ã¹ãã©ã¯ã¿ãŒã«æž¡ãå¿
èŠããããŸãã
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
ã³ãã³ãã®åºå㯠$AppLog å€æ°ã«ä¿åãããããšã«æ³šæããŠãã ããã ãã€ãã©ã€ã³ã¯é垞察話ã¢ãŒãã§äœ¿çšãããŸãããã¹ã¯ãªãããäœæããã«ã¯ãªããžã§ã¯ããžã®åç
§ãç¶æããå¿
èŠãããããšããããããŸãã ããã«ãã³ã¢ .NET Core ã¯ã©ã¹ã¯ System åå空éã«å«ãŸããŠããŸããPowerShell ã¯ããã©ã«ãã§ãã®äžã§æå®ãããåãæ€çŽ¢ãããããSystem.Diagnostics.EventLog ã®ä»£ããã« Diagnostics.EventLog ãèšè¿°ããããšã¯éåžžã«æ£ããããšã§ãã
ãã°ãæäœããã«ã¯ãé©åãªæ¹æ³ã䜿çšã§ããŸãã
$AppLog | Get-Member -MemberType Method
ã¢ã¯ã»ã¹æš©ãããå ŽåãClear() ã¡ãœããã«ãã£ãŠã¯ãªã¢ããããšããŸãã
$AppLog.Clear()
New-Object ã³ãã³ãã¬ããã¯ãCOM ã³ã³ããŒãã³ããæäœããããã«ã䜿çšãããŸãã Windows ã¹ã¯ãªãã ãµãŒããŒã«ä»å±ã®ã©ã€ãã©ãªãã Internet Explorer ãªã©ã® ActiveX ã¢ããªã±ãŒã·ã§ã³ãŸã§ãéåžžã«å€ãã®ãã®ãååšããŸãã COM ãªããžã§ã¯ããäœæããã«ã¯ãç®çã®ã¯ã©ã¹ã®ããã°ã©ã ã«ãã ProgId ã䜿çšã㊠-ComObject ãã©ã¡ãŒã¿ãŒãèšå®ããå¿ èŠããããŸãã
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
ä»»æã®æ§é ãæã€ç¬èªã®ãªããžã§ã¯ããäœæããã«ã¯ãNew-Object ã䜿çšããã®ã¯å€ãããŠé¢åã«èŠããŸãããã®ã³ãã³ãã¬ããã¯ãPowerShell ã®å€éšã®ãœãããŠã§ã¢ ã³ã³ããŒãã³ããæäœããããã«äœ¿çšãããŸãã ä»åŸã®èšäºã§ããã®åé¡ã«ã€ããŠããã«è©³ãã説æããŸãã .NET ãªããžã§ã¯ããš COM ãªããžã§ã¯ãã«å ããŠãCIM (WMI) ãªããžã§ã¯ããš ADSI ãªããžã§ã¯ãã«ã€ããŠã説æããŸãã
éçã¡ãœããã®åŒã³åºã
System.Environment ã System.Math ãªã©ãäžéšã® .NET Core ã¯ã©ã¹ã¯ã€ã³ã¹ã¿ã³ã¹åã§ããŸããã 圌ãã§ã
[System.Environment] | Get-Member
éçã¡ã³ããŒã®ã¿ã衚瀺ããã«ã¯ã-Static ãã©ã¡ãŒã¿ãŒãæå®ã㊠Get-Member ãåŒã³åºããŸã (ãªããžã§ã¯ã ã¿ã€ãã«æ³šæããŠãã ãã)ã
[System.Environment] | Get-Member -Static
éçããããã£ãšã¡ãœããã«ã¢ã¯ã»ã¹ããã«ã¯ããªãã©ã«ã®åŸã«ããªãªãã®ä»£ããã« XNUMX ã€ã®é£ç¶ããã³ãã³ã䜿çšããŸãã
[System.Environment]::OSVersion
ãŸãã¯
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
PSã«ã¹ã¿ã ãªããžã§ã¯ããšå ¥åããŸã
PowerShell ã§äœ¿çšã§ããå€æ°ã®ããŒã¿åã®äžã§ããä»»æã®æ§é ãæã€ãªããžã§ã¯ããæ ŒçŽããããã«èšèšããã PSCustomObject ã«ã€ããŠèšåãã䟡å€ããããŸãã New-Object ã³ãã³ãã¬ããã䜿çšããŠãã®ãããªãªããžã§ã¯ããäœæããã®ã¯å€å žçãªæ¹æ³ãšèããããŠããŸãããé¢åã§æ代é ãã®æ¹æ³ã§ãã
$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()
ãã®ã¿ã€ãã®ãªããžã§ã¯ãã®æ¬ ç¹ã® XNUMX ã€ã¯ãããããã£ã®é åºãå€æŽãããå¯èœæ§ãããããšã§ãã ãããåé¿ããã«ã¯ã [owned] å±æ§ã䜿çšããå¿
èŠããããŸãã
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
ãªããžã§ã¯ããäœæããã«ã¯ä»ã«ããªãã·ã§ã³ããããŸããäžèšã§ã¯ã³ãã³ãã¬ããã®äœ¿çšã«ã€ããŠèª¬æããŸããã
$object | Add-Member âMemberType NoteProperty âName Age âValue 33
$object | Get-Member
Add-Member ã³ãã³ãã¬ããã䜿çšãããšãã-MemberType ScriptMethodãæ§é ã䜿çšããŠã以åã«äœæãã $oââbject ã«ããããã£ã ãã§ãªãã¡ãœãããè¿œå ã§ããŸãã
$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
}
ãªããžã§ã¯ã (ã¯ã©ã¹ ã€ã³ã¹ã¿ã³ã¹) ãäœæããã«ã¯ãã³ãã³ãã¬ããã䜿çšããŸãã
$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 ã§ã®ãªããžã§ã¯ãã®æäœã«é¢ãã説æã¯ããã¹ãŠãç¶²çŸ ããŠãããšã¯èšããŸããã 次ã®åºçç©ã§ã¯ãå®éã®äŸã䜿çšããŠããã«è©³ãã説æããŸããã·ãªãŒãºã® XNUMX çªç®ã®èšäºã§ã¯ãPowerShell ãšãµãŒãããŒã㣠ãœãããŠã§ã¢ ã³ã³ããŒãã³ãã®çµ±åã®åé¡ã«ã€ããŠåãäžããŸãã éå»ã®ããŒãã¯ä»¥äžã®ãªã³ã¯ããã芧ããã ããŸãã
åºæïŒ habr.com