Verschachteltes ForEach-Object und Where-Object in PowerShell
-
Verwenden Sie das
Where-Object
-Cmdlet in PowerShell -
Verwenden Sie das
ForEach-Object
-Cmdlet in PowerShell -
Verwenden Sie in PowerShell verschachtelte
ForEach-Object
undWhere-Object
Where-Object
und ForEach-Object
sind die beiden am häufigsten verwendeten Cmdlets in PowerShell. Das Where-Object
funktioniert wie WHERE
und das ForEach-Object
funktioniert wie FOREACH
.
In diesem Artikel wird erläutert, wie wir Where-Object
und ForEach-Object
für verschiedene Zwecke verwenden können. Außerdem werden wir notwendige Beispiele und Erklärungen sehen, um das Thema einfacher zu machen.
Verwenden Sie das Where-Object
-Cmdlet in PowerShell
Das Where-Object
ist ein integriertes Cmdlet, das den Ausgabebefehl filtert und die gewünschten Informationen anzeigt. Generell funktioniert das Where-Object
wie ein Filter.
Außerdem können Sie Bedingungen erstellen, die entweder wahr oder falsch zurückgeben können.
Im folgenden Beispiel finden wir alle Dienste, die auf unserem Computer im automatischen
Modus ausgeführt werden. Der Befehl für diesen Zweck sieht in etwa wie folgt aus:
Get-Service | Where-Object -FilterScript {$_.StartType -EQ 'Automatic'}
Nachdem Sie die obige Befehlszeile ausgeführt haben, erhalten Sie eine Ausgabe wie die folgende:
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
Verwenden Sie das ForEach-Object
-Cmdlet in PowerShell
Mit dem ForEach-Object
können Sie für jedes angegebene Objekt eine bestimmte Aufgabe ausführen. In unserem Beispiel unten teilen wir jedes Objekt durch 1024
.
Der Code für unser Beispiel sieht wie folgt aus:
3000, 567980, 112432 | ForEach-Object -Process {$_/1024}
Nachdem Sie die obige Befehlszeile ausgeführt haben, erhalten Sie eine Ausgabe wie unten gezeigt:
2.9296875
554.66796875
109.796875
Verwenden Sie in PowerShell verschachtelte ForEach-Object
und Where-Object
Unten haben wir ein Beispiel für die Verwendung von ForEach-Object
und Where-Object
im verschachtelten Modus geteilt. Der Code wird etwa wie folgt aussehen:
$MyArray = ("zoom", "explorer", "edge")
$MyArray | ForEach-Object { get-process | Where-Object ProcessName -EQ $_ | Out-Host }
Nachdem Sie die obige Befehlszeile ausgeführt haben, erhalten Sie diese Ausgabe:
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
2054 78 65900 136676 30.17 4496 7 explorer
Bitte beachten Sie, dass die hier freigegebenen Beispielcodes nur in der Windows PowerShell-Umgebung ausführbar sind.
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