PowerShell의 중첩된 ForEach-Object 및 Where-Object

MD Aminul Islam 2023년6월21일
  1. PowerShell에서 Where-Object Cmdlet 사용
  2. PowerShell에서 ForEach-Object Cmdlet 사용
  3. PowerShell에서 중첩 ForEach-ObjectWhere-Object 사용
PowerShell의 중첩된 ForEach-Object 및 Where-Object

Where-ObjectForEach-Object는 PowerShell에서 가장 많이 사용되는 두 가지 cmdlet입니다. Where-ObjectWHERE처럼 작동하고 ForEach-ObjectFOREACH처럼 작동합니다.

이 기사에서는 Where-ObjectForEach-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-ObjectWhere-Object 사용

아래에서 중첩 모드에서 ForEach-ObjectWhere-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 환경에서만 실행 가능합니다.

MD Aminul Islam avatar MD Aminul Islam avatar

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

관련 문장 - PowerShell Object