PowerShell의 중첩된 ForEach-Object 및 Where-Object
-
PowerShell에서
Where-Object
Cmdlet 사용 -
PowerShell에서
ForEach-Object
Cmdlet 사용 -
PowerShell에서 중첩
ForEach-Object
및Where-Object
사용
Where-Object
및 ForEach-Object
는 PowerShell에서 가장 많이 사용되는 두 가지 cmdlet입니다. Where-Object
는 WHERE
처럼 작동하고 ForEach-Object
는 FOREACH
처럼 작동합니다.
이 기사에서는 Where-Object
및 ForEach-Object
를 다양한 용도로 사용하는 방법에 대해 설명합니다. 또한 주제를 더 쉽게 만들기 위해 필요한 예와 설명을 볼 것입니다.
PowerShell에서 Where-Object
Cmdlet 사용
Where-Object
는 출력 명령을 필터링하고 보려는 정보를 표시하는 기본 제공 cmdlet입니다. 일반적으로 Where-Object
는 필터처럼 작동합니다.
또한 true 또는 false를 반환할 수 있는 조건을 만들 수 있습니다.
아래 예에서는 컴퓨터에서 자동
모드로 실행되는 모든 서비스를 찾을 수 있습니다. 이 목적을 위한 명령은 다음과 같습니다.
Get-Service | Where-Object -FilterScript {$_.StartType -EQ 'Automatic'}
위 명령줄을 실행하면 아래와 같은 출력이 표시됩니다.
Status Name DisplayName
------ ---- -----------
Running AudioEndpointBu... Windows Audio Endpoint Builder
Running Audiosrv Windows Audio
Running BFE Base Filtering Engine
Running Bonjour Service Bonjour Service
Running BrokerInfrastru... Background Tasks Infrastructure Ser...
Running CDPSvc Connected Devices Platform Service
Running CDPUserSvc_1505... Connected Devices Platform User Ser...
Running ClickToRunSvc Microsoft Office Click-to-Run Service
Running CoreMessagingRe... CoreMessaging
Running cplspcon Intel(R) Content Protection HDCP Se...
Running CryptSvc Cryptographic Services
Running CxAudMsg Conexant Audio Message Service
Running CxUtilSvc CxUtilSvc
Running DcomLaunch DCOM Server Process Launcher
Running Dhcp DHCP Client
Running DiagTrack Connected User Experiences and Tele...
Running DispBrokerDeskt... Display Policy Service
Running Dnscache DNS Client
Running Dolby DAX2 API ... Dolby DAX2 API Service
Running DoSvc Delivery Optimization
Running DPS Diagnostic Policy Service
Stopped DSAService Intel(R) Driver & Support Assistant
Running DusmSvc Data Usage
Stopped edgeupdate Microsoft Edge Update Service (edge...
Running ElevationService Wondershare Driver Install Service ...
Stopped ESRV_SVC_QUEENC... Energy Server Service queencreek
Running EventLog Windows Event Log
Running EventSystem COM+ Event System
Running FontCache Windows Font Cache Service
Stopped gpsvc Group Policy Client
Running ibtsiva Intel Bluetooth Service
Running igccservice Intel(R) Graphics Command Center Se...
Running igfxCUIService2... Intel(R) HD Graphics Control Panel ...
Running iphlpsvc IP Helper
Running LanmanServer Server
Running LanmanWorkstation Workstation
Running LSM Local Session Manager
Stopped MapsBroker Downloaded Maps Manager
Running mpssvc Windows Defender Firewall
Running NlaSvc Network Location Awareness
Running nsi Network Store Interface Service
Running OneSyncSvc_1505... Sync Host_1505b45f
Running Power Power
Running ProfSvc User Profile Service
Running RasMan Remote Access Connection Manager
Running RpcEptMapper RPC Endpoint Mapper
Running RpcSs Remote Procedure Call (RPC)
Running SamSs Security Accounts Manager
Running SAService Conexant SmartAudio service
Running Schedule Task Scheduler
Running SENS System Event Notification Service
Running SgrmBroker System Guard Runtime Monitor Broker
Running ShellHWDetection Shell Hardware Detection
Running Spooler Print Spooler
Stopped sppsvc Software Protection
Running stisvc Windows Image Acquisition (WIA)
Running StorSvc Storage Service
Running SynTPEnhService SynTPEnh Caller Service
Running SystemEventsBroker System Events Broker
Stopped SystemUsageRepo... Intel(R) System Usage Report Servic...
Running Themes Themes
Running TrkWks Distributed Link Tracking Client
Running UserManager User Manager
Running UsoSvc Update Orchestrator Service
Running Wcmsvc Windows Connection Manager
Running WinDefend Microsoft Defender Antivirus Service
Running Winmgmt Windows Management Instrumentation
Running WlanSvc WLAN AutoConfig
Running Wondershare Ins... Wondershare Install Assist Service
Running WpnService Windows Push Notifications System S...
Running WpnUserService_... Windows Push Notifications User Ser...
Stopped WsAppService Wondershare Application Framework S...
Running wscsvc Security Center
Running WSearch Windows Search
PowerShell에서 ForEach-Object
Cmdlet 사용
ForEach-Object
를 사용하면 지정된 각 개체에 대해 특정 작업을 실행할 수 있습니다. 아래 예제에서는 각 객체를 1024
로 나눕니다.
예제의 코드는 다음과 같습니다.
3000, 567980, 112432 | ForEach-Object -Process {$_/1024}
위 명령줄을 실행하면 아래와 같은 출력이 표시됩니다.
2.9296875
554.66796875
109.796875
PowerShell에서 중첩 ForEach-Object
및 Where-Object
사용
아래에서 중첩 모드에서 ForEach-Object
와 Where-Object
를 모두 사용하는 예를 공유했습니다. 코드는 다음과 같습니다.
$MyArray = ("zoom", "explorer", "edge")
$MyArray | ForEach-Object { get-process | Where-Object ProcessName -EQ $_ | Out-Host }
위 명령줄을 실행하면 다음과 같은 결과가 표시됩니다.
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
2054 78 65900 136676 30.17 4496 7 explorer
여기에 공유된 예제 코드는 Windows PowerShell 환경에서만 실행 가능합니다.
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn