PowerShell 7.0.0 Preview6新機能 - パフォーマンスカウンター

【連載】

PowerShell Core入門 - 基本コマンドの使い方

【第84回】PowerShell 7.0.0 Preview6新機能 - パフォーマンスカウンター

[2020/01/31 08:00]後藤大地 ブックマーク ブックマーク

パフォーマンスモニターとPowerShell

Windowsには「パフォーマンスモニター」と呼ばれるアプリケーションが同梱されているこれは、プロセッサやメモリ、ディスク、ネットワークといったシステムのパフォーマンスに関連するような基本統計データを閲覧するためのアプリケーションだ。タスクマネージャよりも専門性の高いアプリケーションなので普段使うことはないかもしれないが、システムのさまざまな統計データを取得することができるアプリケーションであり、知っておいて損はない。

Windows 10のパフォーマンスモニター

パフォーマンスモニターの表示を折れ線グラフからレポートに切り替えると、プログラミング言語から利用できるデータとして想像しやすくなる。表示されているテキストがアクセスパスになっており、表示されている値が返り値ということになる。

パフォーマンスモニターが表示するデータはWindows PowerShellからも取得することができるのだが、PowerShell Coreというオープンソースソフトウエアになった段階で利用することができなくなった。ベースとしている.NET Coreがこの機能を提供しなくなったためだ。複数のプラットフォームで動作するようにする場合には除外の対象となるところだろう。

PowerShell 7.0.0 Preview6から、このWindowsのパフォーマンスカウンター情報に再度アクセスできるようになった。今回はこのデータを取得する方法を紹介する。

パフォーマンスカウンターデータを取得するGet-Counterコマンドレット

パフォーマンスカウンターデータはGet-Counterコマンドレットを使って取得することができる。次のように何の引数も指定しないでGet-Counterコマンドレットを実行すると指定可能な引数のサンプルが表示される。

Get-Counterコマンドレットを引数なしで実行した場合

表示されたCounterSamplesを参考にしながらGet-Counterコマンドレットの引数に指定すると、次のように指定したパスのカウンターデータを取得できる。

パスを指定してカウンターデータを取得

Get-Counterコマンドレットに指定できるパスは多岐に渡る。指定できるパスはパフォーマンスモニターで追加できる内容などから推測できる。次のようにパフォーマンスモニターではグラフに表示したい対象を追加することができるのだが、ここで指定できるパスはGet-Counterコマンドレットでも指定できる。

パフォーマンスモニターでは表示する対象を自由に追加できる

メモリの使用率を追加したパフォーマンスモニター

次のスクリーンショットは、パフォーマンスモニターで追加表示を行ったカウンターデータをGet-Counterコマンドレットで取得して表示させたものだ。

メモリの使用量をGet-Counterコマンドレット経由で取得した場合のサンプル

なお、カウンターのセット名がわかれば次のようにGet-Counterコマンドレットに-ListSetパラメータを指定して内容を表示させることができる。

Processorカウンターセット名を指定して、表示可能なパスを表示させている

また、Get-Counterコマンドレットは、-Continuousパラメータを指定することで連続して取得値を表示させ続けることができる。UNIX系OSのstat系コマンドの動作のようなものだ。

Get-Counterに、-Continuousパラメータを指定すると、ずっと値を取得して出力し続ける

システムの挙動に合わせたスクリプトが作成可能になる

Get-Counterコマンドレットが動くと何が嬉しいかと言うと、システムの状況に応じて挙動を変えるスクリプトが組めるようになる点にある。例えば、ディスクの使用量が90%を超えたら指定のメールアドレスに通知を送るとか、システム負荷が既定値を超えた状態が10分以上続いたら指定のメールアドレスに通知するとかいったことが可能になる。取得できるリソース対象が多岐にわたるというのが、特に嬉しいところだ。同じ方法でさまざまなカウンターデータを取得することができる。

UNIX系のOSではそういったスクリプトを組むことはたやすい。PowerShell 7からはPowerShellでも同じような処理が書けるようになる。これでまた1つ、PowerShell 7を使ったシステム管理の範囲が広がったということになる。

Get-CounterはWindows専用のコマンドレット

残念ながら、この機能はもともとWindowsのパフォーマンスカウンターデータを取得するための機能だ。PowerShell Coreになった段階で削除されたことからもわかる通り、Windowsでしか機能しない。次のようにmacOSで実行しても、Get-Counterというコマンドレットは表示されないというエラーが表示される。

Get-CounterはWindows専用のコマンドレット

Microsoftはユーザーからの要望に応じてWindows以外のプラットフォームへも対応を進めている。Get-Counterコマンドレットは今のところWindowsプラットフォームでしか動作しないが、将来的にはmacOSやLinuxといったほかのプラットフォームでも利用できるようになる可能性もある。今後のリリースで注目しておきたい。

参考資料

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【連載】RPA入門 - ツールで学ぶ活用シーン

【連載】RPA入門 - ツールで学ぶ活用シーン

AIには、ルールベース、機械学習、深層学習(ディープラーニング)の3つのレベルがあり、レベルが上がるに連れてより高度な人工知能を実現しますが、AIのスピンオフという位置付けで、Digital Labor(仮想知的労働者)によるホワイトカラー業務の自動化を実現するRPAが注目されています。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
知りたい! カナコさん 皆で話そうAIのコト
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る