かころぐ

とある万屋(何でもエンジニア)の思ったこと。

Windows Power Shell で指定したサービスの稼働確認

Windows Power Shell 3.0 になってsyntax error(構文エラー)に波線が付くようになったというのと、Windows 2008 R2 とWindows 7 に標準搭載されるようになったので最近ちょくちょく使うようになりました。

 

個人的意見ですが、私はGUI操作は好きじゃ無いです。

理由は簡単で「GUI操作の場合、証拠が残らないから」

 

特に、サービスの確認漏れ・誤操作というのを幾度となく見てきたし(私も経験した)夜中眠いときに、画面のことを電話で言われても困るのよ。

その点、CUIはログを出すようにすれば(←ここ重要)最悪コマンド叩かせてログを送って貰うのもありですし、作業員さんも確認する項目が減るでしょう?

というのが、私の持論です。

 

さて、本題のPower Shell を使ってサービスの確認をしようですが

「Get-Service」を使いますがこれだけで叩くとサービス全て出てきます。

 

それでは確認しづらいので、フィルタをかけるわけですが、一筋縄ではいきませんでした。

それは、パイプで渡されるのがテキストではなくオブジェクトだから

単純に出力結果にgrep をかけるだけではないのです。

それを理解するのに1時間くらいtry and error です

結果的に、「 Where-Object {$_.ObjectName -match "pattern"}」でパイプするでした。

やっぱり自ら考え手を動かさないと技術は習得できないと痛感しました。

 

 

 

以下、「windows から始まるサービスが稼働中のものを一覧で表示するコマンド」でした。

「Get-Service | Where-Object {$_.DisplayName  -match "
windows"} | Where-Object {$_.Status  -match "running"}」

 

>>2/25追記 上記は基本書式ですが、PSv3からは以下簡略書式も使えました。

>>「Get-Service | Where-Object DisplayName  -match "windows" | Where-Object Status  -match "running"」

 

 

 

Status   Name               DisplayName

------   ----               -----------

Running  AudioEndpointBu... Windows Audio Endpoint Builder

Running  AudioSrv           Windows Audio

Running  eventlog           Windows Event Log

Running  FontCache          Windows Font Cache Service

Running  MpsSvc             Windows Firewall

Running  stisvc             Windows Image Acquisition (WIA)

Running  W32Time            Windows Time

Running  wcncsvc            Windows Connect Now - Config Registrar

Running  Winmgmt            Windows Management Instrumentation

Running  wlidsvc            Windows Live ID Sign-in Assistant

Running  WMPNetworkSvc      Windows Media Player Network Sharin...

Running  WSearch            Windows Search

Running  wuauserv           Windows Update