DOSのdir
コマンドの良い古き良き時代を覚えていますか?Linuxのls
コマンドはどうですか?それなら、Get-childItemはそれをさらに進化させたものです。
実際、PowerShellにはdir
とls
のエイリアスがあります。Get-Childitem PowerShellコマンドレットは、PowerShellコンソールまたはPowerShell スクリプトを通じてファイルシステム上のファイルとフォルダをリストするだけでなく、レジストリキーと値、さまざまな証明書ストアの証明書、さらにはActive Directoryなどを列挙することもできます。
初級/中級のPowerShellスクリプタの方は、PowerShellツールの作成に関する無料のミニコースもぜひご覧ください!PowerShellツールの作成方法について、9,000語以上の深い説明と洞察が提供されています。
Get-Childitemを理解するためには、まず、単にファイルではなく多くのオブジェクトを子アイテムとして扱い、列挙する点でdir
とls
と同様と考えてください。エイリアスまたは完全なコマンド名を使用してそれを使用できます。
このコマンドはPowerShell v1以降で利用可能なので、PowerShellのバージョンとの互換性が保証されています。
Get-ChildItemはツリーをトラバースします。
A file system is a hierarchy. It has a folder structure with files inside of folders and those folders inside of other folders. A file system is like a tree. That tree has a trunk (C:\
for example) and “branches” coming off of it (folders). In fact, we even have a tree
command.
このコマンドをローカルコンピュータのローカルパス、PowerShellリモートスクリプトブロックおよびその中でGet-ChildItem
を使用するか、UNCパスに向けることができます。いずれも同じように動作します。たとえば、現在のディレクトリにあるすべてのファイルをリストするだけです。
PowerShellプロバイダー
Microsoftは、ファイルシステムの「ツリー」構造を他のシステムにも適用できることを認識しました。ファイルシステムの「ツリー」にはフォルダとファイルがありますが、レジストリにはキーと値があり、Windowsの証明書システムにはストアとそのストア内の証明書があります。これらの特定の領域はすべてツリーとして表現できるため、PowerShellプロバイダが誕生しました。なぜPowerShellプロバイダについて話しているのかというと、Get-ChilldItem
コマンドレットは、各プロバイダが公開するPowerShellドライブと対話する*-Item
コマンドレットの一部であるからです。
Get-ChildItem
コマンドレットは、PowerShellドライブ上の任意の数のオブジェクトを出力でき、パイプラインを介して各アイテムを処理したり、PowerShellのforeachループ内で処理したりすることができます。それはPowerShellドライブの概念を理解しており、ファイルシステムフォルダ、レジストリキー、または証明書ストアのいずれかを指定することができます。
以下では、このコマンドがC:\フォルダ、HKEY Current Userハイブ、およびPowerShell証明書ストアを列挙できることがわかります。
フィルタリング
Get-ChildItem
PowerShellコマンドは、ドライブ上のすべてのオブジェクトを取得するだけでなく、Filter
、Include
、Exclude
などの異なるパラメータを使用して情報をフィルタリングすることもできます。可能な限りPowerShellの普遍的なFilter
パラメータを使用することを常にお勧めします。このパラメータは、フィルタ構文を個々のプロバイダに直接渡します。この構文は非常に高速ですが、クエリされるプロバイダに依存します。
たとえば、Filter
構文がName -eq 'foo'
の場合、ファイルをクエリする場合には完全に機能しますが、レジストリをクエリする場合には機能しません。なぜなら、レジストリプロバイダにはフィルタが存在しないからです!
それでもうまくいかない場合は、Include
およびExclude
パラメータを使用することもできます。
このPowerShellコマンドには、Force
というファイルとフォルダを出力する隠しファイルとフォルダ、File
およびDirectory
のようなファイルシステム固有のパラメータもあります。完全なGet-ChildItem
の詳細は、Get-Help
またはMicrosoftのドキュメントを参照してください。
Get-ChildItem
のもう一つの便利な機能は、ワイルドカード文字を使用してパスを解決できることです。PowerShellでは、ワイルドカード文字は通常、何でも表します。たとえば、.txt拡張子を持つすべてのファイルを表示したい場合は、フォルダへのパスと*.txt
を指定するだけです。
また、ファイル属性に基づいてフィルタリングすることもできます。たとえば、フォルダ内の読み取り専用ファイルのみを検索したい場合があります。
概要
このPowerShellコマンドは、何度も使用することになるコマンドレットの1つです。ほとんどの場合、おそらくFileSystemプロバイダーを使用することになるでしょうが、このコマンドレットはさまざまなことができることを覚えておくことが重要です。ファイル、フォルダ、レジストリキー、レジストリ値、証明書、Active Directoryのユーザー、コンピュータ、さらには環境変数、関数などをクエリするために使用できます。
迷った場合は、Get-PSDrive
コマンドを実行して、Get-ChildItem
がクエリできるすべてのロードされたPowerShellドライブのリストを確認してください。