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

【連載】

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

【第75回】PowerShell Core入門 - 基本コマンドの使い方

[2019/11/22 08:00]後藤大地 ブックマーク ブックマーク

  • サーバ/ストレージ

サーバ/ストレージ

見やすくなったFormat-Hex

PowerShellにはデータを16進数でダンプするコマンドレットとして「Format-Hex」が用意されている。このコマンドレットを使うと、パイプラインを流れてくるオブジェクトの中身を16進数で表示できる。データ分析やコマンド開発をしている場合、あるデータがどういった形式のデータとして送られてきているかをチェックしたいことがあるが、そういった場合に利用できるコマンドレットだ。

同様の処理はUNIX系OSにもコマンドとして用意されている。コマンド名やオプションはOSごとに異なるのだが、「hexdump」という名前でインストールされていることが多いように思う。

例えば、hexdumpコマンドにデータを流し込むと、次のように流れてきたデータを16進数でダンプするとともに、ASCII文字として表示できる部分はASCII文字で表示してくれる。実際にどういったデータが流れてきているのか調べたいときに、このコマンドは結構重宝する。

hexdumpコマンドの実行例 - macOS

PowerShellのFormat-Hexコマンドレットも基本的にはhexdumpコマンドと同じような使い方となる。次のスクリーンショットはFormat-HexコマンドレットをそれぞれPowerShell 7.0.0-preview4とPowerShell 7.0.0-preview5で実行したものだ。PowerShell 7.0.0-preview5のほうが、出力が多少見やすくなっていることを確認できる。

Format-Hexコマンドの実行例 - PowerShell 7.0.0-preview4

Format-Hexコマンドの実行例 - PowerShell 7.0.0-preview5

hexdumpコマンドとFormat-Hexコマンドレットはよく似ている。hexdumpコマンドとFormat-Hexコマンドレットとの最大の違いは、Format-Hexコマンドがパイプラインを流れてくるオブジェクトを個別に処理するということだ。上記サンプルであれば、「Hello World」という文字列と「Konnichiwa」という文字列を、それぞれ別の文字列オブジェクトとして処理していることがわかる。hexdumpコマンドではこうはいかない。UNIX系OSではパイプを流れるのはただのデータであり、オブジェクトではないからだ。

PowerShell 7.0.0-preview4までのFormat-Hexコマンドレットは、パイプラインを流れてくるオブジェクトを個別に処理してはいるものの、どのダンプがどのデータに対応しているのか、一瞥してもよくわからないところがあった。これがPowerShell 7.0.0-preview5では改良されており、オブジェクトの型(クラス)やオフセットも表示されるようになった。おかげで、どのデータがどのタンプかわかりやすくなった。

PowerShell 7.0.0-preview4までのFormat-Hexコマンドレットは型情報は表示しない

PowerShell 7.0.0-preview5からはオブジェクトごとに型やオフセットが表示されるようになった

Format-Hexコマンドレットにもう少し多めのオブジェクトを流し込んだ例を次に示す。オブジェクトごとに型(クラス)が認識されていることや、実際にどんなサイズのデータが流れてきているかよくわかる。

PowerShell 7.0.0-preview5 Format-Hexコマンドレットサンプル

ちょっとした変化ではあるのだが、このFormat-Hexコマンドレットの改善は嬉しい。これは、コミュニティから寄せられた要望に基づく変更だとされている。PowerShell開発をめぐるエコシステムが機能している一例ということになるようだ。

Get-HotFixコマンドレット復活

細かい変更となるが、Windows 10のPowerShell 7.0.0-preview5で再びGet-HotFixコマンドレットが使用できるようになった。Get-HotFixコマンドレットは、Windowsに適用されたパッチを一覧表示するコマンドレットだ。PowreShell Core 6系では使用できなくなっていたが、PowerShell 7.0.0-preview5からもう一度利用できるようになった。もちろん、Windows以外のプラットフォームではこのマンドレットは機能しない。

Get-HotFixコマンドレット実行サンプル

Get-HotFixコマンドレットはSystem.Managementネームスペースを使用する。しかし、PowerShell Core 6系が使っていた.NET Core 2系にはSystem.Managementネームスペースは存在していない。このため、PowerShell Core 6系ではGet-HotFixコマンドレットが使用できなくなっていた。

しかし、PowerShell 7系は.NET Core 3.0を使うようになっている。.NET Core 3.0にはSystem.Managementネームスペースが再度導入されており、PowerShell 7.0.0-preview5において再びGet-HotFixコマンドレットが使用できるようになった。

参考資料

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

一覧はこちら

連載目次

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

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

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

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

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします

会員登録(無料)

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

一覧はこちら

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

一覧はこちら

ページの先頭に戻る