ForEach-Object y Where-Object anidados en PowerShell
-
Utilice el cmdlet
Dónde-Objeto
en PowerShell -
Use el cmdlet
ForEach-Object
en PowerShell -
Use
ForEach-Object
anidado yWhere-Object
en PowerShell
Where-Object
y ForEach-Object
son los dos cmdlets más utilizados en PowerShell. El Where-Object
funciona como WHERE
, y ForEach-Object
funciona como FOREACH
.
Este artículo discutirá cómo podemos usar Where-Object
y ForEach-Object
para varios propósitos. Además, veremos ejemplos y explicaciones necesarias para facilitar el tema.
Utilice el cmdlet Dónde-Objeto
en PowerShell
El Where-Object
es un cmdlet integrado que filtra el comando de salida y muestra la información que desea ver. Generalmente, el Dónde-Objeto
funciona como un filtro.
También le permite crear condiciones que pueden devolver verdadero o falso.
En el siguiente ejemplo, encontraremos todos los servicios que se ejecutan en nuestro ordenador en modo automático
. El comando para este propósito es algo como lo siguiente:
Get-Service | Where-Object -FilterScript {$_.StartType -EQ 'Automatic'}
Después de ejecutar la línea de comando anterior, obtendrá un resultado como el siguiente:
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
Use el cmdlet ForEach-Object
en PowerShell
El ForEach-Object
le permitirá ejecutar una tarea específica para cada objeto especificado. En nuestro ejemplo a continuación, dividiremos cada objeto por 1024
.
El código de nuestro ejemplo será como el siguiente:
3000, 567980, 112432 | ForEach-Object -Process {$_/1024}
Después de ejecutar la línea de comando anterior, obtendrá una salida como se muestra a continuación:
2.9296875
554.66796875
109.796875
Use ForEach-Object
anidado y Where-Object
en PowerShell
A continuación, compartimos un ejemplo del uso de ForEach-Object
y Where-Object
en modo anidado. El código será algo como lo siguiente:
$MyArray = ("zoom", "explorer", "edge")
$MyArray | ForEach-Object { get-process | Where-Object ProcessName -EQ $_ | Out-Host }
Después de ejecutar la línea de comando anterior, obtendrá este resultado:
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
2054 78 65900 136676 30.17 4496 7 explorer
Tenga en cuenta que los códigos de ejemplo que se comparten aquí solo se pueden ejecutar en el entorno de 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