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