PowerShell

【PowerShell】フォルダ内にあるファイルを取得する方法

2019年6月30日

こんにちは!そーまんです。

今回は、特定のフォルダ内にあるファイルを取得する方法についてご紹介します。


どういう時に使うか

利用用途は様々ですが、例えば以下のような目的で使用することができます。まずはファイルの一覧を取得するところから始めます。

  • 特定のフォルダの中にあるファイルの一覧を取得したい時や、一覧の中に特定の拡張子を持つファイル、例えば CSV ファイルがあるかどうか確認したい時
  • ファイルを取得した後に一覧をテキストファイルに書き込んだり、ファイルを別の場所に移動したり、または Import-Csv コマンドレットでファイルを読み込んで ForEach-Object で繰り返し処理をしたい時


ファイルを取得する方法

Get-ChildItem コマンドレットを使います。

試しに C:\Windows\System32 の中のファイルを取得してみましょう。かなり多く表示されます。


特定のフォルダにある特定の拡張子を含むファイル名を取得したい場合は -Filter を使います。

ここでは、System32 フォルダ内にテキストがあるかファイルを取得してみました。


特定のフォルダにあるフォルダ名を取得したい場合は -Directory を使います。

ここでは、System32 フォルダ内にフォルダがあるか取得してみました。


特定のフォルダにあるファイルを再帰的に取得したい場合は、-Recurce を使います。

それをパイプで Where-Object コマンドレットに渡してファイルの属性を a (アーカイブ) を指定しています。

属性の一覧は以下にまとめておきました。

属性説明
dディレクトリ
aアーカイブ
r読み取り専用
h隠しファイル
sシステムファイル
ファイル属性の一覧

以下は、User1 のデスクトップから再帰的に 1 日より前のファイルを取得するといった内容です。


ファイルを取得した後にどうするか (応用)

上の方法でファイルの一覧を取得したり、特定の拡張子を持つファイルを取得した後に様々な処理をする事ができます。

ここで重要なのが、取得したファイルの情報 (オブジェクト) をこの縦棒 | を使って次の処理に渡してあげるという事です。

この縦棒がパイプライン (以降パイプと省略) というものになります。パイプについては以下の記事で説明しています。

パイプで処理結果を渡した後に、次の処理を行います。ここではいくつか簡単なサンプルを挙げてみましたので参考になれば幸いです。

ファイルを取得した後にテキストに書き込む

Out-File コマンドレットでテキストファイルとして出力する事ができます。


ファイルを取得した後に別の場所にコピー・または移動する

取得したファイルの情報 $File に代入し、移動元のフォルダ ($Source) と取得したファイル名 ($File) を Join-Path コマンドレットでフルパスに結合します。

その後に Move-Item コマンドレットでファイルと移動先のフォルダ ($Target) へ移動します。


最後に

以上になります。いかがでしょうか。

ここではファイルを取得した後にパイプを使って様々な処理ができる事が分かりました。

実際に現場で使える処理になりますので、まずはファイルの取得をする方法を覚えておきましょう。

取得する処理が理解できたら、次へ上に書いたとおりにテキストに出力したり、移動したり削除したりする処理にパイプを使って渡してあげてみて下さい。

また色々な処理を試してみて効率の良い処理などを試してみると面白いかと思います。

それでは最後までお読みいただきありがとうございました!

  • この記事を書いた人

そーまん

セキュリティエンジニアやってます。
ブログ歴3年。PVは月15万PV程度。
趣味はボクシング、筋トレ、登山です。
穏やかで人見知りな性格です。

人気記事

1

こんにちは!そーまんです。 今回は、PC に適用されている GPO を確認する方法について書きました。 本題に入る前に、一応参考までにGPOの適用タイミングについての記事をここに貼りましたので、必要に ...

2

こんにちは!そーまんです。 今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは前置きからです。 まずはじめに 組織では PC のラ ...

3

こんにちは!そーまんです。 今回は、グループポリシー (GPO) を使って、特定のコンピューターに対して、ドメインユーザーに ローカル管理者権限 (以下は特権と記載) を付与する方法について書きました ...

4

こんにちは!そーまんです。 今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 Windows 10 の検証環境をいじってたらサイン ...

5

こんにちは!そーまんです。 今回は、ユーザープロファイルを削除する方法について書いてみました。 企業の場合よくあることですが、1 台の PC を共有 PC として複数人で使ったり、また余り無いかもしれ ...

6

こんにちは!SE ブログの相馬です。       今回は、繰り返し文について書いてみました。PowerShell では他のプログラミング言語同様、繰り返し処理を行うことが ...

7

コマンドを使って CPU とメモリの使用率をデータで取得してみましたので、例えば PC のトラブルシューティングで問題を再現させる際にデータを取得しておくと、原因の特定に役立つ場合があるかと思います。

8

既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

9

企業で多くの GPO が適用されている環境では、PC に GPO が適用されなかったりする問題が発生する場合があるかと思います。その中でも、コンピューターの構成またはユーザーの構成のどちらかで、...

10

こんにちは!そーまんです。 今回は、Windows Server 2019 で NTP サーバーと同期する方法について書きました。 NTP サーバーの必要性や時刻同期の重要性を理解することは社内のシス ...

-PowerShell
-