Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

PowerShell ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์ฐฝ์— ์žˆ๋Š” ๋ช…๋ น์˜ ํ…์ŠคํŠธ ์ถœ๋ ฅ์€ ์ธ๊ฐ„์˜ ์ธ์‹์— ์ ํ•ฉํ•œ ํ˜•์‹์œผ๋กœ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ˆ˜์š”์ผ ์ง€ํ–ฅ ๊ฐœ์ฒด ์ž‘์—…: cmdlet ๋ฐ ํ•จ์ˆ˜๋Š” ๊ฐœ์ฒด๋ฅผ ์ž…๋ ฅ์œผ๋กœ ์ˆ˜์‹ ํ•˜๊ณ  ์ถœ๊ตฌ์—์„œ ๋Œ์•„์™”๋‹ค, ๋Œ€ํ™”ํ˜• ๋ฐ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜ ์œ ํ˜•์€ .NET ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๋ฆฌ์ฆˆ์˜ ๋„ค ๋ฒˆ์งธ ๊ธฐ์‚ฌ์—์„œ๋Š” ๊ฐ์ฒด ์ž‘์—…์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์—ฐ๊ตฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชฉ์ฐจ :

PowerShell์˜ ๊ฐœ์ฒด
๊ฐ์ฒด ๊ตฌ์กฐ ๋ณด๊ธฐ
๊ฐ์ฒด ํ•„ํ„ฐ๋ง
๊ฐœ์ฒด ์ •๋ ฌ
๊ฐœ์ฒด ๋ฐ ํ•ด๋‹น ๋ถ€๋ถ„ ์„ ํƒ
ForEach-Object, Group-Object ๋ฐ Measure-Object
.NET ๋ฐ COM ๊ฐœ์ฒด ๋งŒ๋“ค๊ธฐ(์ƒˆ ๊ฐœ์ฒด)
์ •์  ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
PSCustomObject๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
๋‚˜๋งŒ์˜ ์ˆ˜์—… ๋งŒ๋“ค๊ธฐ

PowerShell์˜ ๊ฐœ์ฒด

๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ ํ•„๋“œ(์†์„ฑ, ์ด๋ฒคํŠธ ๋“ฑ)์™€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ(๋ฉ”์„œ๋“œ)์˜ ๋ชจ์Œ์ด๋ผ๋Š” ์ ์„ ์ƒ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ตฌ์กฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ตํ•ฉ .NET Core ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. COM, CIM(WMI) ๋ฐ ADSI ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ PowerShell์—์„œ๋Š” ๊ฐœ์ฒด๋ฅผ ํ•จ์ˆ˜ ๋ฐ cmdlet์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๊ณ  ํ•ด๋‹น ๊ฐ’์„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ช…๋ น ๊ตฌ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜ (์ปจ๋ฒ ์ด์–ด ๋˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ). ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฐ ๋ช…๋ น์€ ๊ฐœ์ฒด๋ณ„๋กœ ์ถœ๋ ฅ์„ ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ปดํŒŒ์ผ๋œ cmdlet์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ธ‰ ๊ธฐ๋ŠฅํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฐœ์ฒด์— ๋Œ€ํ•ด ํ•„ํ„ฐ๋ง, ์ •๋ ฌ, ๊ทธ๋ฃนํ™”, ๊ตฌ์กฐ ๋ณ€๊ฒฝ ๋“ฑ ๋‹ค์–‘ํ•œ ์กฐ์ž‘์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ฉด ์‹ฌ๊ฐํ•œ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์‹  ํŒ€์€ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ(ํ…์ŠคํŠธ)์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ์ ์ ˆํ•œ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์ฒด ๊ตฌ์กฐ ๋ณด๊ธฐ

์˜ˆ๋ฅผ ๋“ค์–ด, ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” Get-Process cmdlet์„ ์‹คํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

๋ฐ˜ํ™˜๋œ ๊ฐœ์ฒด์˜ ์†์„ฑ๊ณผ ํ•ด๋‹น ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์ผ๋ถ€ ํ˜•์‹ํ™”๋œ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ถœ๋ ฅ์„ ๋ฏธ์„ธ ์กฐ์ •ํ•˜๋ ค๋ฉด ๊ฐœ์ฒด ๊ตฌ์กฐ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ์•ผ ํ•˜๋ฉฐ, Get-Member cmdlet์ด ์ด์— ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Get-Process | Get-Member

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

์—ฌ๊ธฐ์„œ๋Š” ์ด๋ฏธ ์œ ํ˜•๊ณผ ๊ตฌ์กฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ์— ํฌํ•จ๋œ ๊ฐœ์ฒด์˜ ์†์„ฑ๋งŒ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Get-Process | Get-Member -MemberType Property

์ด๋Ÿฌํ•œ ์ง€์‹์€ ๋Œ€ํ™”ํ˜•์œผ๋กœ ๊ด€๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ฑฐ๋‚˜ ๊ณ ์œ ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‘๋‹ต ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ง€๋œ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์œผ๋ ค๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

๊ฐ์ฒด ํ•„ํ„ฐ๋ง

PowerShell์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ๊ฐœ์ฒด๊ฐ€ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Where-Object { ะฑะปะพะบ ัั†ะตะฝะฐั€ะธั }

๊ด„ํ˜ธ ์•ˆ์˜ ์Šคํฌ๋ฆฝํŠธ ๋ธ”๋ก์„ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋Š” ๋ถ€์šธ ๊ฐ’์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. true($true)์ด๋ฉด Where-Object cmdlet์— ์ž…๋ ฅ๋œ ๊ฐœ์ฒด๊ฐ€ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋”ฐ๋ผ ์ „๋‹ฌ๋˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด($false) ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘์ง€๋œ Windows Server ์„œ๋น„์Šค ๋ชฉ๋ก์„ ํ‘œ์‹œํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Status ์†์„ฑ์ด "Stopped"๋กœ ์„ค์ •๋œ ํ•ญ๋ชฉ:

Get-Service | Where-Object {$_.Status -eq "Stopped"}

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

์—ฌ๊ธฐ์„œ ๋‹ค์‹œ ํ…์ŠคํŠธ ํ‘œํ˜„์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ต๊ณผํ•˜๋Š” ๊ฐœ์ฒด์˜ ์œ ํ˜•๊ณผ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

๊ฐœ์ฒด ์ •๋ ฌ

๊ฐœ์ฒด๋ฅผ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ๋•Œ ๊ฐœ์ฒด๋ฅผ ์ •๋ ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค. Sort-Object cmdlet์—๋Š” ์†์„ฑ ์ด๋ฆ„(์ •๋ ฌ ํ‚ค)์ด ์ „๋‹ฌ๋˜๊ณ  ํ•ด๋‹น ๊ฐ’์— ๋”ฐ๋ผ ์ •๋ ฌ๋œ ๊ฐœ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋œ CPU ์‹œ๊ฐ„(cpu ์†์„ฑ)์„ ๊ธฐ์ค€์œผ๋กœ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ์ถœ๋ ฅ์„ ์‰ฝ๊ฒŒ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Get-Process | Sort-Object โ€“Property cpu

-Property ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” Sort-Object cmdlet์„ ํ˜ธ์ถœํ•  ๋•Œ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์—ญ๋ฐฉํ–ฅ ์ •๋ ฌ์˜ ๊ฒฝ์šฐ -Descending ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Get-Process | Sort-Object cpu -Descending

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

๊ฐœ์ฒด ๋ฐ ํ•ด๋‹น ๋ถ€๋ถ„ ์„ ํƒ

Select-Object cmdlet์„ ์‚ฌ์šฉํ•˜๋ฉด -First ๋˜๋Š” -Last ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ดํ”„๋ผ์ธ์˜ ์‹œ์ž‘ ๋˜๋Š” ๋์—์„œ ํŠน์ • ๊ฐœ์ˆ˜์˜ ๊ฐœ์ฒด๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹จ์ผ ๊ฐœ์ฒด๋‚˜ ํŠน์ • ์†์„ฑ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ cmdlet์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ช…๋ น์€ ์ตœ๋Œ€ RAM ์–‘(WS ์†์„ฑ)์„ ์†Œ๋น„ํ•˜๋Š” 10๊ฐœ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

Get-Process | Sort-Object WS -Descending | Select-Object -First 10

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ต๊ณผํ•˜๋Š” ๊ฐœ์ฒด์˜ ํŠน์ • ์†์„ฑ๋งŒ ์„ ํƒํ•˜๊ณ  ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ ์†์„ฑ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Get-Process | Select-Object ProcessName, Id -First 1

ํŒŒ์ดํ”„๋ผ์ธ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋กœ Get-Process cmdlet์—์„œ ๋ฐ˜ํ™˜๋œ ๊ตฌ์กฐ์™€ ๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฅธ ์ƒˆ ๊ฐœ์ฒด๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Get-Member๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

Select-Object๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง€์ •ํ•œ ๋‘ ๊ฐœ์˜ ํ•„๋“œ๋งŒ ํฌํ•จํ•˜๋Š” ๋‹จ์ผ ๊ฐœ์ฒด(-First 1)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐ’์€ Get-Process cmdlet์— ์˜ํ•ด ํŒŒ์ดํ”„๋ผ์ธ์— ์ „๋‹ฌ๋œ ์ฒซ ๋ฒˆ์งธ ๊ฐœ์ฒด์—์„œ ๋ณต์‚ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. PowerShell ์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” Select-Object๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

Select-Object๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„๋˜์–ด์•ผ ํ•˜๋Š” ๊ฐ์ฒด์— ๊ณ„์‚ฐ๋œ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”. ์ด ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ํ‚ค ๊ฐ’์€ ์†์„ฑ ์ด๋ฆ„์— ํ•ด๋‹นํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ํ‚ค ๊ฐ’์€ ํ˜„์žฌ ํŒŒ์ดํ”„๋ผ์ธ ์š”์†Œ์˜ ์†์„ฑ ๊ฐ’์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

์ปจ๋ฒ ์ด์–ด๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๋ฌผ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

ForEach-Object, Group-Object ๋ฐ Measure-Object

๊ฐœ์ฒด ์ž‘์—…์„ ์œ„ํ•œ ๋‹ค๋ฅธ cmdlet์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ€์žฅ ์œ ์šฉํ•œ ์„ธ ๊ฐ€์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ForEach-๊ฐ์ฒด ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฐ ๊ฐœ์ฒด์— ๋Œ€ํ•ด PowerShell ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ForEach-Object { ะฑะปะพะบ ัั†ะตะฝะฐั€ะธั }

๊ทธ๋ฃน ๊ฐœ์ฒด ์†์„ฑ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค.

Group-Object PropertyName

-NoElement ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ์‹คํ–‰ํ•˜๋ฉด ๊ทธ๋ฃน์˜ ์š”์†Œ ์ˆ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธก์ • ๊ฐœ์ฒด ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฐœ์ฒด ํ•„๋“œ ๊ฐ’๋ณ„๋กœ ๋‹ค์–‘ํ•œ ์š”์•ฝ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง‘๊ณ„ํ•ฉ๋‹ˆ๋‹ค(ํ•ฉ๊ณ„๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์ตœ์†Œ๊ฐ’, ์ตœ๋Œ€๊ฐ’ ๋˜๋Š” ํ‰๊ท ๊ฐ’๋„ ์ฐพ์Šต๋‹ˆ๋‹ค).

Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum

์ผ๋ฐ˜์ ์œผ๋กœ ์„ค๋ช…๋œ cmdlet์€ ๋Œ€ํ™”ํ˜•์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ Begin, Process ๋ฐ End ๋ธ”๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค.

.NET ๋ฐ COM ๊ฐœ์ฒด ๋งŒ๋“ค๊ธฐ(์ƒˆ ๊ฐœ์ฒด)

์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์œ ์šฉํ•œ .NET Core ๋ฐ COM ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํฌํ•จ๋œ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. System.Diagnostics.EventLog ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Windows PowerShell์—์„œ ์ง์ ‘ ์‹œ์Šคํ…œ ๋กœ๊ทธ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -TypeName ๋งค๊ฐœ ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ New-Object cmdlet์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

New-Object -TypeName System.Diagnostics.EventLog

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

ํŠน์ • ์ด๋ฒคํŠธ ๋กœ๊ทธ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ํด๋ž˜์Šค์˜ ๊ฒฐ๊ณผ ์ธ์Šคํ„ด์Šค์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ƒ์„ฑ ์ค‘์— -ArgumentList ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ˆ˜ ์ƒ์„ฑ์ž ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด "Application" ๋ฌธ์ž์—ด์„ ์ƒ์„ฑ์ž์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

$AppLog ๋ณ€์ˆ˜์— ๋ช…๋ น ์ถœ๋ ฅ์„ ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉ๋˜์ง€๋งŒ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•ต์‹ฌ .NET Core ํด๋ž˜์Šค๋Š” ์‹œ์Šคํ…œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. PowerShell์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์ง€์ •๋œ ์œ ํ˜•์„ ์ฐพ์œผ๋ฏ€๋กœ System.Diagnostics.EventLog ๋Œ€์‹  Diagnostics.EventLog๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ ์ž‘์—…์„ ์œ„ํ•ด ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$AppLog | Get-Member -MemberType Method

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ Clear() ๋ฉ”์„œ๋“œ์— ์˜ํ•ด ์‚ญ์ œ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

$AppLog.Clear()

New-Object cmdlet์€ 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๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ๊ตฌ์‹์ด๊ณ  ๋ฒˆ๊ฑฐ๋กœ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด cmdlet์€ PowerShell ์™ธ๋ถ€์˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ์™€ ์ž‘๋™ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ–ฅํ›„ ๊ธฐ์‚ฌ์—์„œ๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ๋…ผ์˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET ๋ฐ COM ๊ฐœ์ฒด ์™ธ์—๋„ CIM(WMI) ๋ฐ ADSI ๊ฐœ์ฒด๋„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ •์  ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

System.Environment ๋ฐ System.Math๋ฅผ ํฌํ•จํ•œ ์ผ๋ถ€ .NET Core ํด๋ž˜์Šค๋Š” ์ธ์Šคํ„ด์Šคํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ณต์ „ ์ •์  ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋งŒ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ๋˜๋Š” ์ฐธ์กฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์œ ํ˜• ์ด๋ฆ„์„ ๋Œ€๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด ๋ฆฌํ„ฐ๋Ÿด์„ ํ†ตํ•ด ์ •์  ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Get-Member๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ณด๋ฉด System.Environment ๋Œ€์‹  System.RuntimeType ์œ ํ˜•์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

[System.Environment] | Get-Member

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

์ •์  ๋ฉค๋ฒ„๋งŒ ๋ณด๋ ค๋ฉด -Static ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Get-Member๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค(๊ฐ์ฒด ์œ ํ˜• ์ฐธ๊ณ ).

[System.Environment] | Get-Member -Static

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

์ •์  ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด ๋ฆฌํ„ฐ๋Ÿด ๋’ค์˜ ๋งˆ์นจํ‘œ ๋Œ€์‹  ๋‘ ๊ฐœ์˜ ์—ฐ์† ์ฝœ๋ก ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

[System.Environment]::OSVersion

๋˜๋Š”

$test=[System.Math]::Sqrt(25) 
$test
$test.GetType()

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

PSCustomObject๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.

PowerShell์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜• ์ค‘์—์„œ ์ž„์˜ ๊ตฌ์กฐ์˜ ๊ฐœ์ฒด๋ฅผ ์ €์žฅํ•˜๋„๋ก ์„ค๊ณ„๋œ PSCustomObject๋ฅผ ์–ธ๊ธ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. New-Object cmdlet์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ณ ์ „์ ์ด์ง€๋งŒ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ์˜ค๋ž˜๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

$object = New-Object  โ€“TypeName PSCustomObject -Property @{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'}

๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

$object | Get-Member

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

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()

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

์ด ์œ ํ˜•์˜ ๊ฐœ์ฒด์˜ ๋‹จ์  ์ค‘ ํ•˜๋‚˜๋Š” ํ•ด๋‹น ์†์„ฑ์˜ ์ˆœ์„œ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด [ordered] ์†์„ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'
}

๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‹ค๋ฅธ ์˜ต์…˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ๋Š” cmdlet ์‚ฌ์šฉ์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์„ ํƒ-๊ฐœ์ฒด. ๋‚จ์€ ๊ฒƒ์€ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ „ ์˜ˆ์ œ์˜ ๊ฐ์ฒด์— ๋Œ€ํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

$object | Add-Member โ€“MemberType NoteProperty โ€“Name Age  โ€“Value 33
$object | Get-Member

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

Add-Member cmdlet์„ ์‚ฌ์šฉํ•˜๋ฉด "-MemberType ScriptMethod" ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „์— ๋งŒ๋“  $object์— ์†์„ฑ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฉ”์„œ๋“œ๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ScriptBlock = {
    # ะบะพะด 
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member

ScriptBlock ์œ ํ˜•์˜ $ScriptBlock ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

์†์„ฑ์„ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ํ•ด๋‹น ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

$object.psobject.properties.remove('Name')

๋‚˜๋งŒ์˜ ์ˆ˜์—… ๋งŒ๋“ค๊ธฐ

PowerShell 5.0์—๋Š” ๋‹ค์Œ์„ ์ •์˜ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„ฑ์  ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ตฌ๋ฌธ ํŠน์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๋‹จ์–ด Class๋Š” ์ด๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ํ›„์—๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ  ํ•ด๋‹น ๋ณธ๋ฌธ์„ ์—ฐ์‚ฐ์ž ๊ด„ํ˜ธ ์•ˆ์— ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

class MyClass
{
    # ั‚ะตะปะพ ะบะปะฐััะฐ
}

์ด๋Š” ํ•ด๋‹น ์†์„ฑ, ๋ฉ”์„œ๋“œ ๋ฐ ๊ธฐํƒ€ ์š”์†Œ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ณธ๋ฌธ์ด ํฌํ•จ๋œ ์ง„์ •ํ•œ .NET Core ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

class MyClass 
{
     [string]$Name
     [string]$City
     [string]$Country
}

๊ฐœ์ฒด(ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค)๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด cmdlet์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ƒˆ ๊ฐœ์ฒด๋˜๋Š” [MyClass] ์œ ํ˜•์˜ ๋ฆฌํ„ฐ๋Ÿด ๋ฐ ์˜์‚ฌ์ •์  ๋ฐฉ๋ฒ• new(๊ธฐ๋ณธ ์ƒ์„ฑ์ž):

$object = New-Object -TypeName MyClass

๋˜๋Š”

$object = [MyClass]::new()

๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

$object | Get-Member

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

๋ฒ”์œ„๋ฅผ ์žŠ์ง€ ๋งˆ์„ธ์š”. ์œ ํ˜• ์ด๋ฆ„์„ ๋ฌธ์ž์—ด๋กœ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ํด๋ž˜์Šค๊ฐ€ ์ •์˜๋œ ์Šคํฌ๋ฆฝํŠธ๋‚˜ ๋ชจ๋“ˆ ์™ธ๋ถ€์—์„œ ์œ ํ˜• ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํ•จ์ˆ˜๋Š” ๋ชจ๋“ˆ์ด๋‚˜ ์Šคํฌ๋ฆฝํŠธ ์™ธ๋ถ€์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ํ•ด๋‹น ์†์„ฑ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

ํด๋ž˜์Šค ์„ค๋ช…์€ ์†์„ฑ ์œ ํ˜•๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•ด๋‹น ๊ธฐ๋ณธ๊ฐ’๋„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

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)

๋ฉ”์†Œ๋“œ๋Š” ์˜ค๋ฒ„๋กœ๋“œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํด๋ž˜์Šค์—๋Š” ์ •์  ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ, ์ด๋ฆ„์ด ํด๋ž˜์Šค ์ž์ฒด์˜ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜๋Š” ์ƒ์„ฑ์ž. ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” PowerShell ๋ชจ๋“ˆ์— ์ •์˜๋œ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ธฐ๋ฐ˜ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ƒ์†์ด ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ธฐ์กด .NET ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ณธ ํด๋ž˜์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

class MyClass2 : MyClass
{
      #ั‚ะตะปะพ ะฝะพะฒะพะณะพ ะบะปะฐััะฐ, ะฑะฐะทะพะฒั‹ะผ ะดะปั ะบะพั‚ะพั€ะพะณะพ ัะฒะปัะตั‚ัั MyClass
}
[MyClass2]::new().Smile($true)

PowerShell์—์„œ ๊ฐœ์ฒด ์ž‘์—…์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์™„์ „ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ฐ„ํ–‰๋ฌผ์—์„œ๋Š” ์‹ค์ œ ์‚ฌ๋ก€๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์‹ฌํ™”์‹œํ‚ค๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ๋ฆฌ์ฆˆ์˜ ๋‹ค์„ฏ ๋ฒˆ์งธ ๊ธฐ์‚ฌ์—์„œ๋Š” PowerShell์„ ํƒ€์‚ฌ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ์™€ ํ†ตํ•ฉํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๋‚œํŽธ์€ ์•„๋ž˜ ๋งํฌ์—์„œ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1๋ถ€: ๊ธฐ๋ณธ Windows PowerShell ๊ธฐ๋Šฅ
2๋ถ€: Windows PowerShell ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์†Œ๊ฐœ
3๋ถ€: ์Šคํฌ๋ฆฝํŠธ ๋ฐ ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ, cmdlet ๋งŒ๋“ค๊ธฐ

Windows PowerShell์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? 4๋ถ€: ๊ฐ์ฒด ์ž‘์—…, ์ž์ฒด ํด๋ž˜์Šค

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€