【PowerShell】変数に代入された情報をファイルとして出力する方法~変数に学ぶ~

どうも!リョクちゃです。

今回は前回学んだ変数をもうちょっと使って使い方を学んでいきたいと思います。

その過程で、PowerShellが得意とする(だろう)フォルダ・ファイル操作を駆使しながら

取得した情報をファイルとして出力する方法を紹介していきます。

こんな時便利だと思います。

  • フォルダ内のファイル一覧をテキストファイルに出力
  • 特定のファイルを抜き出し、テキストファイルに出力

といったとこに利用できれば。

ちなみに前回のPowerShellはこちら

PowerShellにも変数や定数、そして関数といったプログラミングにおける基本となる手法や技法があります。そんな中でも触りとなるモノについてまとめています。意外と何でもできてしまうPowerShell、何らかの参考になれば嬉しいです。



変数のおさらい

変数は、以下の記述で作成・宣言することができました。

$<変数名>
[型名]$<変数名>
例)
$sample
[String]$sample

ファイル一覧を取得する

Get-ChildItemを使って、取得した情報を変数に代入してみます。
Get-ChildItemはフォルダやファイルの情報(長さや更新日など)を、
取得してくれるコマンドでした。
Get-ChildItem <オプション引数>
今回は、テスト用に作ったフォルダの中にあるファイルをすべて取得し変数に代入します。
書き方としては、
$<変数名> = Get-ChildItem -Path <探索するフォルダのパス> -Recurse
対象フォルダはこちらになります。
このフォルダ(サブフォルダ含む)にあるファイルをすべて取得してみます。

取得できているかどうか、$testを指定してみてみます。

フォルダ毎にどのファイルがあるのか分けて表示してくれているのがわかります。

これだけでも価値はありますね。ファイル数が多くなるにつれて管理が大変になるので。。。

テキストファイルの出力

この情報が格納された変数をテキストファイルに出力してみます。

テキストファイルの出力には、以下のコマンドを使用します。

Out-File <出力先>

先ほどの取得した情報を出力するには、

001.txtという名前のテキストファイルを生成してくれます。

中身を見てみると、

表示されていた情報と同じ情報が出力されていますね。

特定のファイルを取得

今までは全てのファイルやフォルダを取得してしまう使い方でしたが、

これではあまり価値のある情報とは言えないので、特定のファイルを絞って取得します。

特定のファイルを取得するには、Get-ChildItemのオプション引数としてある、

-Filterを使用します。

今回は、.logファイルを取得してみます。

結果をみてみます。

フォルダ毎に取得ができているのがわかります。

ここまで調べられれば、すぐにどのファイルがどこのフォルダにあるのがわかります。

ちなみにPowerShellのWindowではディレクトリのパスをカーソルで選択し、

コピーをすることができます

つまりは、コピーしたパスをエクスプローラで開いてあげれば、

すぐにそのファイルがある場所へ移動してくれてしまうのです。

こんな形で変数を使うと、やれることの幅が広がってきました。

取得した情報を変数では保持することができるので、何かあった時に

変数に情報を格納していたなと覚えていれば、変数から情報を引っ張ってくれば

問題を早く解決することもできるのではないでしょうか?



まとめ

PowerShellの変数をもうちょっと賢く使った方法を紹介していきました。

変数を使うことでコマンドレットだけで処理するよりも賢く且つ

効率的に扱えることができるようになったのではないでしょうか?

変数は使えるようになる強力なので、ぜひ覚えておいてもらいたいです。

またPowerShellはちょっとしたプログラムを組むことで簡単な自動化もできるので、

高級言語を使ってプログラムを組むよりはいいかなと思います。

環境構築も手間いらずなので、ぜひ習得してみてください。

最後までお読みいただき、ありがとうございます。

スポンサーリンク