PowerShell でネストされた ForEach-Object と Where-Object
-
PowerShell で
Where-Object
コマンドレットを使用する -
PowerShell で
ForEach-Object
コマンドレットを使用する -
PowerShell でネストされた
ForEach-Object
とWhere-Object
を使用する
Where-Object
とForEach-Object
は、PowerShell で最もよく使用される 2つのコマンドレットです。 Where-Object は WHERE のように機能し、ForEach-Object は FOREACH のように機能します。
この記事では、Where-Object
と ForEach-Object
をさまざまな目的に使用する方法について説明します。 また、トピックを簡単にするために必要な例と説明も表示されます。
PowerShell で Where-Object
コマンドレットを使用する
Where-Object
は、出力コマンドをフィルター処理し、表示する情報を表示する組み込みのコマンドレットです。 通常、Where-Object
はフィルターのように機能します。
また、true または false を返す条件を作成することもできます。
以下の例では、コンピュータ上で automatic
モードで実行されているすべてのサービスを見つけます。 この目的のためのコマンドは、次のようなものです。
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
コマンドレットを使用する
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