共有フォルダとか業務利用しているとフォルダ階層が深くなったり、管理できなくなることが多々あります。
また、「フォルダの指定の階層(第2階層までとか)までを抜き出したい」といった用途に使えるコマンドをを一つ紹介します。
ファイルサーバの管理では、第一階層の一覧はDOSコマンドでも対応できます。
しかし、第二階層のみを抜き出したりして一覧化するのは少し面倒です。
今回紹介する Powershell の “Get-ChildItem” コマンドレットを利用することで、指定の階層のフォルダ一覧を抜き出して、CSV出力することができます。
「Treeコマンドだとすべてのフォルダが抜き出される」とか「罫線が入ってしまう」といったわずらわしさから解放されます。
Get-ChildItem コマンドの機能
まずは、”Get-ChildItem” コマンドレットの機能をおさらいしてみます。
このコマンドは、【指定した場所でのアイテム(フォルダーやファイルなど)抽出】してくれます。
「アイテム」と表記しているのは、ファイル・フォルダーだけではなく様々な情報も抜き出すことができます。
今回はフォルダー一覧を抜き出すために、”Get-ChildItem” コマンドレットを利用します。
このコマンドレットの注意点としまして、「空のディレクトリーは表示しません」。
つまり、CSV出力しようとしても、空ディレクトリーだけは抜き出すことはできません。
Get-ChildItem [[-Path] <string[]>] [[-Filter] <string>] [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Depth <uint32>] [-Force] [-Name] [-Attributes <FlagsExpression[FileAttributes]>] [-FollowSymlink] [-Directory] [-File] [-Hidden] [-ReadOnly] [-System] [<CommonParameters>] |
フォルダ階層指定でフォルダ名を抽出
単一のフォルダ指定して、フォルダの名前を抜き出します。
Get-ChildItemコマンドの使って共有フォルダを見てみます。
Get-ChildItem -Path [共有フォルダ] |
カレントディレクトリの状況がわかります。
Get-ChildItem -Path [共有フォルダ] -Depth [数字] |
単一のフォルダ階層が抜き出せましたら、次は階層指定で抜き出していきます。
オプションの -Depth をつけます。
カレントフォルダの位置から1つ下の階層を調べるときは、Depth オプションに “1” を入力します。
サンプルですと、\\localhost\Share\share01 までのアイテムを表示します。
ただ、これではファイルも同時に出力してしまします。
Get-ChildItem -Path [共有フォルダ] -Depth [数字] -Directory |
オプションの -Directory をつけます。
このコマンドで必要な階層の一覧が作成できます。
Mode が”d” のみとなっているので、フォルダのみ抜き出せたのがわかります。
これをExport-Csvコマンドへパイプで渡してCSVへエクスポートすると便利です。
Get-ChildItem -Path [共有フォルダ] -Depth [数字] -Directory | Export-Csv -Path [ファイル出力先] -NoTypeInformation -Encoding UTF8 |
まとめ
Get-ChildItem コマンドを使って、階層指定のフォルダ一覧を抜き出してみました。
このコマンドはファイル・フォルダの表示だけではなく、レジストリなどの設定も検索できる重宝するコマンドです。
今までは共有フォルダの一覧を作製するのに Dir コマンドを駆使して時間をかけていましたが、Powershell ですとCSV出力ができ、簡単にフォルダ一覧が抜き出せます。