亀の甲羅2

今日もまた朝とく起きて励まなん窓に明るきありあけの月

Get-ChildItemでファイルだけ表示させたい(-Fileオプション/PSIsContainer でフォルダ判定)

Get-ChildItemでファイルだけ表示させたい

ある雑然としたフォルダの中からファイル名だけを列挙させたい。
Get-ChildItem -Recurse を使うとフォルダ名も列挙されてしまうのでそれを除く方法を考えた。

目次

本文

1. 古い人間が考えるとこうなる

$path = "~~~"

$a = Get-ChildItem -Recurse -Path $path

$a | %{
    if($_.PSIsContainer -ne $true){
        $_.Name
    }
}

ForEach-Object(%)の中で言えば、「$_.PSIsContainer」の部分でフォルダ判定をしている。フォルダの場合$trueになるので、-ne(not equal)で判定している。

2. 本来ならGet-ChildItemのオプションでファイルだけを取得するべき

$path = "~~~"

$a = Get-ChildItem -Recurse -File -Path $path

$a | %{
        $_.Name
}

Get-ChildItemのオプションで「-File」でファイルだけを絞り込める。逆に「-Directory」でフォルダだけを絞り込める。


バージョン情報

> $PSVersionTable

Name                           Value                                                                                                          
----                           -----                                                                                                          
PSVersion                      5.1.19041.1023