【PowerShell】Get-ChildItem実行結果集（いろいろパラメータ指定した結果）


# はじめに

この記事は、Powershell の `Get-ChildItem` をいろいろなパラメータを指定して実行してみた結果を貼り付けているだけの記事です。

こういう条件だとどうなるんだろう？と思いながらいろいろ試したので残します。

なお、ログ状態で放置していた期間が長いので投稿日時点でも鮮度低めです。

**リファレンス**
[Get-ChildItem](https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-5.1) - Microsoft

**実行環境**
Windows 10
Powershell 5.1系

# コマンド

## 1.パラメータなし

```powershell
# 1.パラメータなし
Get-ChildItem
```

## 2.属性指定して取得

```powershell
# 2-1.ファイルを取得
Get-ChildItem -File

# 2-2.ディレクトリを取得
Get-ChildItem -Directory

# 2-3.非表示を取得
Get-ChildItem -Hidden

# 2-4.読み取り専用を取得
Get-ChildItem -ReadOnly

# 2-5.非表示を含めて取得
Get-ChildItem -Force

```

## 3.再帰的に取得

```powershell
# 3-1.再帰的に取得（非表示アイテムを含まず）
Get-ChildItem -Recurse

# 3-2.再帰的に取得（非表示アイテムを含む）
Get-ChildItem -Recurse -Force

# 3-3.再帰的に取得　1階層下まで
Get-ChildItem -Recurse -Depth 1

# 3-4.再帰的に取得　2階層下まで
Get-ChildItem -Recurse -Depth 2

# 3-5.再帰的に取得　0階層下まで = 直下のみ
Get-ChildItem -Recurse -Depth 0
```

## 4. パスを指定して取得

```powershell
# 4-1.カレントディレクトリの "*.txt" を取得
Get-ChildItem -Path *.txt

# -Path は省略可能
Get-ChildItem  *.txt


# 4-2.C:\work\Adir の一覧を取得
Get-ChildItem -Path C:\work\Adir

# 4-3.C:\work\Adirの"*.txt" ファイルを取得
Get-ChildItem -Path C:\work\Adir\*.txt
```


## 5. Include を使った取得

Include パラメーターを使用する場合、
パスに末尾アスタリスク(`*`)のワイルドカードを指定する必要がある。
Recurse パラメーターをつける場合はパスの省略可能

### A：Includeで後ろに `*`

```powershell:5.Includeを使った取得 A

# 5-1.出力なし
Get-ChildItem -Include "A*"

# 5-2.
# 該当あり
Get-ChildItem -Include "A*" -Path *

# 5-3.
# 該当あり
Get-ChildItem -Include "A*" -Recurse

# 5-4.
# 該当あり
Get-ChildItem -Path * -Include "A*" -Recurse
```

### B：Includeで前に `*`

```powershell:5.Includeを使った取得 B
# 5-5.
# 該当なし
Get-ChildItem -Include "*.txt"

# 5-6.
# 該当あり
Get-ChildItem -Include "*.txt" -Recurse

# 5-7.
# 該当あり
Get-ChildItem -Path * -Include "*.txt"

# 5-8.
# 該当あり
Get-ChildItem -Path * -Include "*.txt" -Recurse

```

## 6. Exclude を使った取得
### A：Excludeで後ろに `*`
```powershell:6.Excludeを使った取得 A
# 6-1.
# 該当あり
Get-ChildItem -Exclude "A*"

# 6-2.
# 該当あり
Get-ChildItem -Exclude "A*" -Recurse

# 6-3.
# 該当あり
Get-ChildItem -Path * -Exclude "A*"

# 6-4.
# 該当あり、6-2.と同じ
Get-ChildItem -Path * -Exclude "A*" -Recurse
```
### B：Excludeで前に `*`
```powershell:6.Excludeを使った取得 B
# 6-5.
# 該当あり
Get-ChildItem -Exclude "*.txt"

# 6-6.
# 該当あり
Get-ChildItem -Exclude "*.txt" -Recurse

# 6-7.
# 該当あり
Get-ChildItem -Path * -Exclude "*.txt"

# 6-8.
# 該当あり、6-6.と同じ
Get-ChildItem -Path * -Exclude "*.txt" -Recurse

```

## 7.その他　絞り込み・加工など

※ここの実行結果は載せていない

### 取得情報を絞った一覧取得
```powershell
# カレントディレクトリのファイル名を取得
Get-ChildItem -File -Name

Get-ChildItem -File -Recurse | ForEach-Object { $_.Name }


# サブディレクトリ内を含むファイルのフルパスを取得
Get-ChildItem -File -Recurse | ForEach-Object { $_.FullName }

```

### 取得対象を絞って一覧取得
```powershell
# "*.txt" ファイルを取得
Get-ChildItem -File -Recurse *.txt


# 更新日時で絞込：2022/9/2 1:00:00 より新しいファイル
Get-ChildItem -File | ForEach-Object {if ($_.LastWriteTime -gt "2022/09/02 01:00:00") {$_}}


# ファイルサイズで絞込：1000 Byte 以上のファイル
Get-ChildItem -File | ForEach-Object {if ($_.Length -ge 1000) {$_}}

```

### 取得したファイルの属性変更
```powershell
# ファイル名を変更
# "置換前" を "置換後" に置換した名前に変更
Get-ChildItem -File | Rename-Item -NewName { $_.Name -replace '置換前','置換後'}


# 更新日時を変更
Get-ChildItem -File | Set-ItemProperty -Name LastWriteTime -Value "2022/10/01 00:00:00"


# 作成日時を変更
Get-ChildItem -File | Set-ItemProperty -Name CreationTime -Value "2022/10/01 00:00:00"

```

# コマンド実行結果
## ファイル配置
コマンド実行結果は、以下の配置・属性で実施した結果

```:ファイル配置
C:\work\
  ├－ Adir\
  │　  ├－ Asubdir\
  │　  │　  ├－ Asub2file.txt
  │　  │　  └－ file2.txt
  │　  ├－ Asubfile.txt
  │　  └－ file1.txt
  ├－ Bdir\
  │　  ├－ Bsubfile.txt
  │　  └－ BsubHiddenfile.ini   # 非表示
  ├－ Cdir.txt\
  │　  ├－ Cfile1.txt
  │　  └－ Cfile2.txt
  ├－ DHiddendir\              # 非表示
  │　  └－ Dsubfile.txt
  ├－ AFILE.INI
  ├－ AFILE.TXT
  ├－ BFile.ps1
  ├－ BFile.txt
  ├－ BHiddenFile.ini          # 非表示
  ├－ CFile
  ├－ CFile.txt
  └－ CReadonlyFile.INI        # 読み取り専用

```

```:ファイル配置(List)
PS C:\work> Get-ChildItem -Recurse -Force | % {
  echo ( "{0}  {1:yyyy/MM/dd HH:mm:ss}  {2,6}  {3}" `
        -f $_.Mode, $_.LastWriteTime, $_.Length, $_.FullName )
}

d-----  2022/11/20 14:05:20       1  C:\work\Adir
d-----  2022/11/20 12:04:28       1  C:\work\Bdir
d-----  2022/11/20 11:29:14       1  C:\work\Cdir.txt
d--h--  2022/11/20 12:16:23       1  C:\work\DHiddendir
-a----  2022/11/20 11:19:51    2980  C:\work\AFILE.INI
-a----  2021/07/10 15:48:06   58122  C:\work\AFILE.TXT
-a----  2022/11/20 11:14:10    4236  C:\work\BFile.ps1
-a----  2022/11/20 11:03:15       0  C:\work\BFile.txt
-a-h--  2022/11/10 02:10:41    2838  C:\work\BHiddenFile.ini
-a----  2022/11/20 11:10:47    7950  C:\work\CFile
-a----  2022/11/20 11:26:28    1860  C:\work\CFile.txt
-ar---  2022/11/20 11:19:51    2980  C:\work\CReadonlyFile.INI
d-----  2022/11/20 14:05:23       1  C:\work\Adir\Asubdir
-a----  2022/11/20 11:26:57     426  C:\work\Adir\Asub1file.txt
-a----  2022/11/20 11:26:57     426  C:\work\Adir\file1.txt
-a----  2022/11/20 11:03:15       0  C:\work\Adir\Asubdir\Asub2file.txt
-a----  2022/11/20 11:26:57     426  C:\work\Adir\Asubdir\file2.txt
-a----  2022/11/20 11:27:13     280  C:\work\Bdir\Bsubfile.txt
-a-h--  2022/11/20 11:03:15       0  C:\work\Bdir\BsubHiddenfile.ini
-a----  2022/11/20 11:28:15     548  C:\work\Cdir.txt\Cfile1.txt
-a----  2022/11/20 11:27:35     601  C:\work\Cdir.txt\Cfile2.txt
-a----  2022/11/20 11:27:13     280  C:\work\DHiddendir\Dsubfile.txt

PS C:\work> 
```

## 1. 条件指定なし

```powershell:コマンド
# 1.カレントディレクトリのファイル・ディレクトリ一覧を取得
Get-ChildItem

```

* 1.カレントディレクトリのファイル・ディレクトリ一覧を取得
```:実行結果 1
PS C:\work> Get-ChildItem


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Adir
d-----        2022/11/20     12:04                Bdir
d-----        2022/11/20     11:29                Cdir.txt
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2021/07/10     15:48          58122 AFILE.TXT
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:10           7950 CFile
-a----        2022/11/20     11:26           1860 CFile.txt
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>
```


## 2. 種類・属性を指定して取得

取得対象（アイテムの種類・属性）を指定して一覧取得
```powershell:コマンド
# 2-1.ファイルのみを取得
Get-ChildItem -File

# 2-2.ディレクトリのみを取得
Get-ChildItem -Directory

# 2-3.非表示のみを取得
Get-ChildItem -Hidden

# 2-4.読み取り専用のみを取得
Get-ChildItem -ReadOnly

# 2-5.非表示を含むファイル・ディレクトリ一覧を取得
Get-ChildItem -Force

```

* 2-1.ファイルのみを取得
```:実行結果 2-1
PS C:\work> Get-ChildItem -File


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2021/07/10     15:48          58122 AFILE.TXT
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:10           7950 CFile
-a----        2022/11/20     11:26           1860 CFile.txt
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>
```

* 2-2.ディレクトリのみを取得
```:実行結果 2-2
PS C:\work> Get-ChildItem -Directory


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Adir
d-----        2022/11/20     12:04                Bdir
d-----        2022/11/20     11:29                Cdir.txt


PS C:\work>
```
* 2-3.非表示のみを取得
```:実行結果 2-3
PS C:\work> Get-ChildItem -Hidden


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d--h--        2022/11/20     12:16                DHiddendir
-a-h--        2022/11/10      2:10           2838 BHiddenFile.ini


PS C:\work>
```
* 2-4.読み取り専用のみを取得
```:実行結果 2-4
PS C:\work> Get-ChildItem -ReadOnly


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>
```
* 2-5.非表示を含むファイル・ディレクトリ一覧を取得
```:実行結果 2-5
PS C:\work> Get-ChildItem -Force


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Adir
d-----        2022/11/20     12:04                Bdir
d-----        2022/11/20     11:29                Cdir.txt
d--h--        2022/11/20     12:16                DHiddendir
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2021/07/10     15:48          58122 AFILE.TXT
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:03              0 BFile.txt
-a-h--        2022/11/10      2:10           2838 BHiddenFile.ini
-a----        2022/11/20     11:10           7950 CFile
-a----        2022/11/20     11:26           1860 CFile.txt
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>
```

## 3.再帰的に取得

取得範囲（アイテムのパス）を指定して取得する
```powershell:3.再帰的に取得
# 3-1.再帰的に取得（非表示アイテムを含まず）
Get-ChildItem -Recurse

# 3-2.再帰的に取得（非表示アイテムを含む）
Get-ChildItem -Recurse -Force

# 3-3.再帰的に取得　1階層下まで
Get-ChildItem -Recurse -Depth 1

# 3-4.再帰的に取得　2階層下まで
Get-ChildItem -Recurse -Depth 2

# 3-5.再帰的に取得　0階層下まで = 直下のみ
Get-ChildItem -Recurse -Depth 0

```

* 3-1.再帰的に取得（非表示アイテムを含まず）
```:実行結果 3-1
PS C:\work> Get-ChildItem -Recurse


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Adir
d-----        2022/11/20     12:04                Bdir
d-----        2022/11/20     11:29                Cdir.txt
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2021/07/10     15:48          58122 AFILE.TXT
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:10           7950 CFile
-a----        2022/11/20     11:26           1860 CFile.txt
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Asubdir
-a----        2022/11/20     11:26            426 Asub1file.txt
-a----        2022/11/20     11:26            426 file1.txt


    ディレクトリ: C:\work\Adir\Asubdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:03              0 Asub2file.txt
-a----        2022/11/20     11:26            426 file2.txt


    ディレクトリ: C:\work\Bdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:27            280 Bsubfile.txt


    ディレクトリ: C:\work\Cdir.txt


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:28            548 Cfile1.txt
-a----        2022/11/20     11:27            601 Cfile2.txt


PS C:\work>

```

* 3-2.再帰的に取得（非表示アイテムを含む）
```:実行結果 3-2
PS C:\work> Get-ChildItem -Recurse -Force


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Adir
d-----        2022/11/20     12:04                Bdir
d-----        2022/11/20     11:29                Cdir.txt
d--h--        2022/11/20     12:16                DHiddendir
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2021/07/10     15:48          58122 AFILE.TXT
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:03              0 BFile.txt
-a-h--        2022/11/10      2:10           2838 BHiddenFile.ini
-a----        2022/11/20     11:10           7950 CFile
-a----        2022/11/20     11:26           1860 CFile.txt
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Asubdir
-a----        2022/11/20     11:26            426 Asub1file.txt
-a----        2022/11/20     11:26            426 file1.txt


    ディレクトリ: C:\work\Adir\Asubdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:03              0 Asub2file.txt
-a----        2022/11/20     11:26            426 file2.txt


    ディレクトリ: C:\work\Bdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:27            280 Bsubfile.txt
-a-h--        2022/11/20     11:03              0 BsubHiddenfile.ini


    ディレクトリ: C:\work\Cdir.txt


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:28            548 Cfile1.txt
-a----        2022/11/20     11:27            601 Cfile2.txt


    ディレクトリ: C:\work\DHiddendir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:27            280 Dsubfile.txt


PS C:\work>

```

* 3-3.再帰的に取得　1階層下まで

2階層下 `C:\work\Adir\Asubdir` 内のファイルは表示されない

```:実行結果 3-3
PS C:\work> Get-ChildItem -Recurse -Depth 1


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Adir
d-----        2022/11/20     12:04                Bdir
d-----        2022/11/20     11:29                Cdir.txt
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2021/07/10     15:48          58122 AFILE.TXT
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:10           7950 CFile
-a----        2022/11/20     11:26           1860 CFile.txt
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Asubdir
-a----        2022/11/20     11:26            426 Asub1file.txt
-a----        2022/11/20     11:26            426 file1.txt


    ディレクトリ: C:\work\Bdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:27            280 Bsubfile.txt


    ディレクトリ: C:\work\Cdir.txt


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:28            548 Cfile1.txt
-a----        2022/11/20     11:27            601 Cfile2.txt


PS C:\work>

```

* 3-4.再帰的に取得　2階層下まで

2階層下 `C:\work\Adir\Asubdir` 内のファイルも表示される


```:実行結果 3-4
PS C:\work> Get-ChildItem -Recurse -Depth 2


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Adir
d-----        2022/11/20     12:04                Bdir
d-----        2022/11/20     11:29                Cdir.txt
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2021/07/10     15:48          58122 AFILE.TXT
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:10           7950 CFile
-a----        2022/11/20     11:26           1860 CFile.txt
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Asubdir
-a----        2022/11/20     11:26            426 Asub1file.txt
-a----        2022/11/20     11:26            426 file1.txt


    ディレクトリ: C:\work\Adir\Asubdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:03              0 Asub2file.txt
-a----        2022/11/20     11:26            426 file2.txt


    ディレクトリ: C:\work\Bdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:27            280 Bsubfile.txt


    ディレクトリ: C:\work\Cdir.txt


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:28            548 Cfile1.txt
-a----        2022/11/20     11:27            601 Cfile2.txt


PS C:\work>

```

* 3-5.再帰的に取得　0階層下まで

直下のみ表示される（`-Recurse`なしと同じ）


```:実行結果 3-5
PS C:\work> Get-ChildItem -Recurse -Depth 0


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Adir
d-----        2022/11/20     12:04                Bdir
d-----        2022/11/20     11:29                Cdir.txt
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2021/07/10     15:48          58122 AFILE.TXT
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:10           7950 CFile
-a----        2022/11/20     11:26           1860 CFile.txt
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>

```


## 4. パスを指定して取得

```powershell:4.パスを指定して取得
# 4-1.カレントディレクトリの "*.txt" を取得
Get-ChildItem -Path *.txt

# -Path は省略可能なため、以下の書き方でも同じ
Get-ChildItem  *.txt


# 4-2.C:\work\Adir の一覧を取得
Get-ChildItem -Path C:\work\Adir

# -Path は省略可能なため、以下の書き方でも同じ
Get-ChildItem C:\work\Adir


# 4-3.C:\work\Adirの"*.txt" ファイルを取得
Get-ChildItem -Path C:\work\Adir\*.txt

# -Path は省略可能なため、以下の書き方でも同じ
Get-ChildItem  C:\work\Adir\*.txt

```


* 4-1.カレントディレクトリの `*.txt` を取得
```:実行結果 4-1
PS C:\work> Get-ChildItem -Path *.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     11:29                Cdir.txt
-a----        2021/07/10     15:48          58122 AFILE.TXT
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:26           1860 CFile.txt


PS C:\work>
```

* 4-2. `C:\work\Adir` の一覧を取得
```:実行結果 4-2
PS C:\work> Get-ChildItem -Path C:\work\Adir


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Asubdir
-a----        2022/11/20     11:26            426 Asub1file.txt
-a----        2022/11/20     11:26            426 file1.txt


PS C:\work>
```

*  4-3. `C:\work\Adir` の `*.txt` ファイルを取得
```:実行結果 4-3
PS C:\work> Get-ChildItem -Path C:\work\Adir\*.txt


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:26            426 Asub1file.txt
-a----        2022/11/20     11:26            426 file1.txt


PS C:\work>
```

## 5. Include を使った取得

Include パラメーターを使用する場合、
パスに末尾アスタリスク(`*`)のワイルドカードを指定する必要がある。
Recurse パラメーターをつける場合はパスの省略可能

### A：Includeで後ろに `*`

```powershell:コマンド A
# 5-1.
# 該当なし
Get-ChildItem -Include "A*"

# 5-2.
# 該当あり
Get-ChildItem -Include "A*" -Recurse

# 5-3.
# 該当あり
Get-ChildItem -Path * -Include "A*"

# 5-4.
# 該当あり
Get-ChildItem -Path * -Include "A*" -Recurse
```

|No|Include|Path|Recurse|結果|
|:-:|:-:|:-:|:-:|:-|
|1|A*|-|-|なし|
|2|A*|-|x|あり (6件)|
|3|A*|*|x|あり (4件)|
|4|A*|*|x|あり (5件)|

【凡例】　-：指定なし　x：指定あり　その他：指定値

* 5-1
```:実行結果 5-1
PS C:\work> Get-ChildItem -Include "A*"
PS C:\work>
```

→ Path で末尾アスタリスク、Recurse　どちらも指定してないため出力なし

* 5-2

```:実行結果 5-2
PS C:\work> Get-ChildItem -Include "A*" -Recurse


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Adir


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Asubdir


    ディレクトリ: C:\work\Adir\Asubdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:03              0 Asub2file.txt


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:26            426 Asub1file.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2021/07/10     15:48          58122 AFILE.TXT


PS C:\work>
```


* 5-3

```:実行結果 5-3
PS C:\work> Get-ChildItem -Path * -Include "A*"


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Asubdir
-a----        2022/11/20     11:26            426 Asub1file.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2021/07/10     15:48          58122 AFILE.TXT


PS C:\work>
```

* 5-4

```:実行結果 5-4
PS C:\work> Get-ChildItem -Path * -Include "A*" -Recurse


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Asubdir


    ディレクトリ: C:\work\Adir\Asubdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:03              0 Asub2file.txt


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:26            426 Asub1file.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2021/07/10     15:48          58122 AFILE.TXT


PS C:\work>
```

#### 結果比較
一覧（フルパス）表示で、パラメータを変えて結果がどう変わっているかを確認

`-Path *` 指定のみ
```:実行結果 5-3 (List)
PS C:\work> Get-ChildItem -Path * -Include "A*" `
 | % { echo ( "{0} {1}" -f $_.Mode,  $_.FullName ) }

d----- C:\work\Adir\Asubdir
-a---- C:\work\Adir\Asub1file.txt
-a---- C:\work\AFILE.INI
-a---- C:\work\AFILE.TXT

PS C:\work> 
```
↓ `-Recurse` を追加すると
```:実行結果 5-4 (List)
PS C:\work> Get-ChildItem -Path * -Include "A*" -Recurse `
 | % { echo ( "{0} {1}" -f $_.Mode,  $_.FullName ) }

d----- C:\work\Adir\Asubdir
-a---- C:\work\Adir\Asubdir\Asub2file.txt    ★これが増えた
-a---- C:\work\Adir\Asub1file.txt
-a---- C:\work\AFILE.INI
-a---- C:\work\AFILE.TXT

PS C:\work> 
```
↓ `-Path *` 指定を外すと（`-Recurse` だけにすると）

```:実行結果 5-2 (List)
PS C:\work> Get-ChildItem -Include "A*" -Recurse `
 | % { echo ( "{0} {1}" -f $_.Mode,  $_.FullName ) }

d----- C:\work\Adir                         ★これが増えた
d----- C:\work\Adir\Asubdir
-a---- C:\work\Adir\Asubdir\Asub2file.txt
-a---- C:\work\Adir\Asub1file.txt
-a---- C:\work\AFILE.INI
-a---- C:\work\AFILE.TXT

PS C:\work> 
```

### B：Includeで前に `*`

```powershell:コマンド B
# 5-5.
# 該当なし
Get-ChildItem -Include "*.txt"

# 5-6.
# 該当あり
Get-ChildItem -Include "*.txt" -Recurse

# 5-7.
# 該当あり
Get-ChildItem -Path * -Include "*.txt"

# 5-8.
# 該当あり
Get-ChildItem -Path * -Include "*.txt" -Recurse

```

|No|Include|Path|Recurse|結果|
|:-:|:-:|:-:|:-:|:-|
|5|*.txt|-|-|なし|
|6|*.txt|-|x|あり (11件)|
|7|*.txt|*|-|あり (5件)|
|8|*.txt|*|x|あり (10件)|

【凡例】　-：指定なし　x：指定あり　その他：指定値


* 5-5

```:実行結果 5-5
PS C:\work> Get-ChildItem -Include "*.txt"
PS C:\work>

```
→ Path で末尾アスタリスク、Recurse　どちらも指定してないため出力なし

* 5-6

```:実行結果 5-6
PS C:\work> Get-ChildItem -Include "*.txt" -Recurse


    ディレクトリ: C:\work\Adir\Asubdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:03              0 Asub2file.txt
-a----        2022/11/20     11:26            426 file2.txt


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:26            426 Asub1file.txt
-a----        2022/11/20     11:26            426 file1.txt


    ディレクトリ: C:\work\Bdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:27            280 Bsubfile.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     11:29                Cdir.txt


    ディレクトリ: C:\work\Cdir.txt


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:28            548 Cfile1.txt
-a----        2022/11/20     11:27            601 Cfile2.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2021/07/10     15:48          58122 AFILE.TXT
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:26           1860 CFile.txt


PS C:\work>
```

* 5-7

```:実行結果 5-7
PS C:\work> Get-ChildItem -Path * -Include "*.txt"


    ディレクトリ: C:\work\Cdir.txt


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:28            548 Cfile1.txt
-a----        2022/11/20     11:27            601 Cfile2.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2021/07/10     15:48          58122 AFILE.TXT
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:26           1860 CFile.txt


PS C:\work>
```


* 5-8

```:実行結果 5-8
PS C:\work> Get-ChildItem -Path * -Include "*.txt" -Recurse


    ディレクトリ: C:\work\Adir\Asubdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:03              0 Asub2file.txt
-a----        2022/11/20     11:26            426 file2.txt


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:26            426 Asub1file.txt
-a----        2022/11/20     11:26            426 file1.txt


    ディレクトリ: C:\work\Bdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:27            280 Bsubfile.txt


    ディレクトリ: C:\work\Cdir.txt


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:28            548 Cfile1.txt
-a----        2022/11/20     11:27            601 Cfile2.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2021/07/10     15:48          58122 AFILE.TXT
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:26           1860 CFile.txt


PS C:\work>
```

#### 結果比較
一覧（フルパス）表示で、パラメータを変えて結果がどう変わっているかを確認

`-Path *` 指定のみ

```:実行結果 5-7 (List)
PS C:\work> Get-ChildItem -Path * -Include "*.txt" `
 | % { echo ( "{0} {1}" -f $_.Mode,  $_.FullName ) }

-a---- C:\work\Cdir.txt\Cfile1.txt
-a---- C:\work\Cdir.txt\Cfile2.txt
-a---- C:\work\AFILE.TXT
-a---- C:\work\BFile.txt
-a---- C:\work\CFile.txt

PS C:\work> 
```
↓ `-Recurse` を追加すると
```:実行結果 5-8 (List)
PS C:\work> Get-ChildItem -Path * -Include "*.txt" -Recurse `
 | % { echo ( "{0} {1}" -f $_.Mode,  $_.FullName ) }

-a---- C:\work\Adir\Asubdir\Asub2file.txt   ★これが増えた
-a---- C:\work\Adir\Asubdir\file2.txt       ★これが増えた
-a---- C:\work\Adir\Asub1file.txt           ★これが増えた
-a---- C:\work\Adir\file1.txt               ★これが増えた
-a---- C:\work\Bdir\Bsubfile.txt            ★これが増えた
-a---- C:\work\Cdir.txt\Cfile1.txt
-a---- C:\work\Cdir.txt\Cfile2.txt
-a---- C:\work\AFILE.TXT
-a---- C:\work\BFile.txt
-a---- C:\work\CFile.txt

PS C:\work> 
```
↓ `-Path *` 指定を外すと（`-Recurse` だけにすると）
```:実行結果 5-6 (List)
PS C:\work> Get-ChildItem -Include "*.txt" -Recurse `
 | % { echo ( "{0} {1}" -f $_.Mode,  $_.FullName ) }

-a---- C:\work\Adir\Asubdir\Asub2file.txt
-a---- C:\work\Adir\Asubdir\file2.txt
-a---- C:\work\Adir\Asub1file.txt
-a---- C:\work\Adir\file1.txt
-a---- C:\work\Bdir\Bsubfile.txt
d----- C:\work\Cdir.txt                         ★これが増えた
-a---- C:\work\Cdir.txt\Cfile1.txt
-a---- C:\work\Cdir.txt\Cfile2.txt
-a---- C:\work\AFILE.TXT
-a---- C:\work\BFile.txt
-a---- C:\work\CFile.txt

PS C:\work> 
```

## 6. Exclude を使った取得

### A：Excludeで後ろに `*`

```powershell:コマンド A
# 6-1.
# 該当あり
Get-ChildItem -Exclude "A*"

# 6-2.
# 該当あり
Get-ChildItem -Exclude "A*" -Recurse

# 6-3.
# 該当あり
Get-ChildItem -Path * -Exclude "A*"

# 6-4.
# 該当あり、6-2.と同じ
Get-ChildItem -Path * -Exclude "A*" -Recurse
```

* 6-1

```:実行結果 6-1
PS C:\work> Get-ChildItem -Exclude "A*"


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     12:04                Bdir
d-----        2022/11/20     11:29                Cdir.txt
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:10           7950 CFile
-a----        2022/11/20     11:26           1860 CFile.txt
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>
```
【参考】一覧（フルパス）表示版
```:実行結果 6-1 (List)
PS C:\work> Get-ChildItem -Exclude "A*" `
>>  | % { echo ( "{0} {1}" -f $_.Mode,  $_.FullName ) }
>>
d----- C:\work\Bdir
d----- C:\work\Cdir.txt
-a---- C:\work\BFile.ps1
-a---- C:\work\BFile.txt
-a---- C:\work\CFile
-a---- C:\work\CFile.txt
-ar--- C:\work\CReadonlyFile.INI
PS C:\work>
```

* 6-2

```:実行結果 6-2
PS C:\work> Get-ChildItem -Exclude "A*" -Recurse


    ディレクトリ: C:\work\Adir\Asubdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:26            426 file2.txt


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:26            426 file1.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     12:04                Bdir


    ディレクトリ: C:\work\Bdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:27            280 Bsubfile.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     11:29                Cdir.txt


    ディレクトリ: C:\work\Cdir.txt


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:28            548 Cfile1.txt
-a----        2022/11/20     11:27            601 Cfile2.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:10           7950 CFile
-a----        2022/11/20     11:26           1860 CFile.txt
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>
```
【参考】一覧（フルパス）表示版
```:実行結果 6-2 (List)
PS C:\work> Get-ChildItem -Exclude "A*" -Recurse `
>>  | % { echo ( "{0} {1}" -f $_.Mode,  $_.FullName ) }
>>
-a---- C:\work\Adir\Asubdir\file2.txt
-a---- C:\work\Adir\file1.txt
d----- C:\work\Bdir
-a---- C:\work\Bdir\Bsubfile.txt
d----- C:\work\Cdir.txt
-a---- C:\work\Cdir.txt\Cfile1.txt
-a---- C:\work\Cdir.txt\Cfile2.txt
-a---- C:\work\BFile.ps1
-a---- C:\work\BFile.txt
-a---- C:\work\CFile
-a---- C:\work\CFile.txt
-ar--- C:\work\CReadonlyFile.INI
PS C:\work>
```

* 6-3

```:実行結果 6-3
PS C:\work> Get-ChildItem -Path * -Exclude "A*"


    ディレクトリ: C:\work\Bdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:27            280 Bsubfile.txt


    ディレクトリ: C:\work\Cdir.txt


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:28            548 Cfile1.txt
-a----        2022/11/20     11:27            601 Cfile2.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:10           7950 CFile
-a----        2022/11/20     11:26           1860 CFile.txt
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>
```
【参考】一覧（フルパス）表示版
```:実行結果 6-3 (List)
PS C:\work> Get-ChildItem -Path * -Exclude "A*" `
>>  | % { echo ( "{0} {1}" -f $_.Mode,  $_.FullName ) }
>>
-a---- C:\work\Bdir\Bsubfile.txt
-a---- C:\work\Cdir.txt\Cfile1.txt
-a---- C:\work\Cdir.txt\Cfile2.txt
-a---- C:\work\BFile.ps1
-a---- C:\work\BFile.txt
-a---- C:\work\CFile
-a---- C:\work\CFile.txt
-ar--- C:\work\CReadonlyFile.INI
PS C:\work>
```
* 6-4

```:実行結果 6-4
PS C:\work> Get-ChildItem -Path * -Exclude "A*" -Recurse
>>


    ディレクトリ: C:\work\Adir\Asubdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:26            426 file2.txt


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:26            426 file1.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     12:04                Bdir


    ディレクトリ: C:\work\Bdir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:27            280 Bsubfile.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     11:29                Cdir.txt


    ディレクトリ: C:\work\Cdir.txt


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:28            548 Cfile1.txt
-a----        2022/11/20     11:27            601 Cfile2.txt


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:03              0 BFile.txt
-a----        2022/11/20     11:10           7950 CFile
-a----        2022/11/20     11:26           1860 CFile.txt
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>
```
【参考】一覧（フルパス）表示版
```:実行結果 6-4 (List)
PS C:\work> Get-ChildItem -Path * -Exclude "A*" -Recurse `
>>  | % { echo ( "{0} {1}" -f $_.Mode,  $_.FullName ) }
>>
-a---- C:\work\Adir\Asubdir\file2.txt
-a---- C:\work\Adir\file1.txt
d----- C:\work\Bdir
-a---- C:\work\Bdir\Bsubfile.txt
d----- C:\work\Cdir.txt
-a---- C:\work\Cdir.txt\Cfile1.txt
-a---- C:\work\Cdir.txt\Cfile2.txt
-a---- C:\work\BFile.ps1
-a---- C:\work\BFile.txt
-a---- C:\work\CFile
-a---- C:\work\CFile.txt
-ar--- C:\work\CReadonlyFile.INI
PS C:\work>
```

### B：Excludeで前に `*`


```powershell:コマンド B
# 6-5.
# 該当あり
Get-ChildItem -Exclude "*.txt"

# 6-6.
# 該当あり
Get-ChildItem -Exclude "*.txt" -Recurse

# 6-7.
# 該当あり
Get-ChildItem -Path * -Exclude "*.txt"

# 6-8.
# 該当あり、6-6.と同じ
Get-ChildItem -Path * -Exclude "*.txt" -Recurse

```

* 6-5

```:実行結果 6-5
PS C:\work> Get-ChildItem -Exclude "*.txt"


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Adir
d-----        2022/11/20     12:04                Bdir
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:10           7950 CFile
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>

```

* 6-6

```:実行結果 6-6
PS C:\work> Get-ChildItem -Exclude "*.txt" -Recurse


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Adir


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Asubdir


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     12:04                Bdir
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:10           7950 CFile
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>

```

* 6-7

```:実行結果 6-7
PS C:\work> Get-ChildItem -Path * -Exclude "*.txt"


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Asubdir


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:10           7950 CFile
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>

```

* 6-8

```:実行結果 6-8
PS C:\work> Get-ChildItem -Path * -Exclude "*.txt" -Recurse


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Adir


    ディレクトリ: C:\work\Adir


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     14:05                Asubdir


    ディレクトリ: C:\work


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/11/20     12:04                Bdir
-a----        2022/11/20     11:19           2980 AFILE.INI
-a----        2022/11/20     11:14           4236 BFile.ps1
-a----        2022/11/20     11:10           7950 CFile
-ar---        2022/11/20     11:19           2980 CReadonlyFile.INI


PS C:\work>
```

# 覚書・補足

## 戻り値の型とプロパティ

`Get-ChildItem`の戻り値の型は、
取得したアイテムがファイルの場合とディレクトリの場合で異なる。

* ファイルの場合：`FileInfo` 型
* ディレクトリの場合：`DirectoryInfo` 型

該当したファイル・ディレクトリが複数の場合、配列型となり、
各要素が`FileInfo`型または`DirectoryInfo`型となる。

### ファイルの場合

```:Get-ChildItem の戻り値(File)
PS C:\work> $files = Get-ChildItem -File

PS C:\work> $files.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array



PS > $files[0].GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     FileInfo                                 System.IO.FileSystemInfo
```
```:FileInfo のプロパティ
PS C:\work> $files[0] | Get-Member -MemberType Property


   TypeName: System.IO.FileInfo

Name              MemberType Definition                                    
----              ---------- ----------                                    
Attributes        Property   System.IO.FileAttributes Attributes {get;set;}
CreationTime      Property   datetime CreationTime {get;set;}              
CreationTimeUtc   Property   datetime CreationTimeUtc {get;set;}           
Directory         Property   System.IO.DirectoryInfo Directory {get;}      
DirectoryName     Property   string DirectoryName {get;}                   
Exists            Property   bool Exists {get;}                            
Extension         Property   string Extension {get;}                       
FullName          Property   string FullName {get;}                        
IsReadOnly        Property   bool IsReadOnly {get;set;}                    
LastAccessTime    Property   datetime LastAccessTime {get;set;}            
LastAccessTimeUtc Property   datetime LastAccessTimeUtc {get;set;}         
LastWriteTime     Property   datetime LastWriteTime {get;set;}             
LastWriteTimeUtc  Property   datetime LastWriteTimeUtc {get;set;}          
Length            Property   long Length {get;}                            
Name              Property   string Name {get;}                            



PS C:\work>
```

### ディレクトリの場合


```:Get-ChildItem の戻り値(Directory)
PS C:\work> $files = Get-ChildItem -Directory

PS C:\work> $files.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array



PS > $files[0].GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     DirectoryInfo                            System.IO.FileSystemInfo

```

```:DirectoryInfo のプロパティ
PS C:\work> $files[0] | Get-Member -MemberType Property


   TypeName: System.IO.DirectoryInfo

Name              MemberType Definition                                    
----              ---------- ----------                                    
Attributes        Property   System.IO.FileAttributes Attributes {get;set;}
CreationTime      Property   datetime CreationTime {get;set;}              
CreationTimeUtc   Property   datetime CreationTimeUtc {get;set;}           
Exists            Property   bool Exists {get;}                            
Extension         Property   string Extension {get;}                       
FullName          Property   string FullName {get;}                        
LastAccessTime    Property   datetime LastAccessTime {get;set;}            
LastAccessTimeUtc Property   datetime LastAccessTimeUtc {get;set;}         
LastWriteTime     Property   datetime LastWriteTime {get;set;}             
LastWriteTimeUtc  Property   datetime LastWriteTimeUtc {get;set;}          
Name              Property   string Name {get;}                            
Parent            Property   System.IO.DirectoryInfo Parent {get;}         
Root              Property   System.IO.DirectoryInfo Root {get;}           


PS C:\work>
```

## エイリアス
Powershellのコマンドは意味が分かりやすいが、その反面、
打つとなると長くて面倒だったりするのでエイリアスを使う。

### Get-ChildItem
* `dir`
* `gci`
* `ls` (windowsのみ)


### その他
このページで使っているもの

`ForEach-Object`のエイリアス
* `%`
* `foreach`

`Set-ItemProperty`のエイリアス
* `sp`


## よく使うコマンド

```
ls -Name

ls -R | % {$_.FullName}

ls -File -R | % {$_.FullName}
```