All symptoms日本語

T11

Get-ChildItem -Include is ignored and every file comes back

Symptom

Get-ChildItem -LiteralPath $dir -Recurse -Include *.ps1 also returns .md and .json files, and whatever runs next touches them.

Check it in 30 seconds

Paste into Windows PowerShell 5.1. It only creates files under your %TEMP% folder. If the last line says REPRODUCED, it happens on your machine.

$d = Join-Path $env:TEMP ('cc-trap-' + (Get-Date -Format 'yyyyMMddHHmmss')); New-Item -ItemType Directory $d -Force | Out-Null
New-Item -ItemType Directory "$d\inc" -Force | Out-Null
[IO.File]::WriteAllText("$d\inc\a.ps1", 'x'); [IO.File]::WriteAllText("$d\inc\b.md", 'x')
$n = @(Get-ChildItem -LiteralPath "$d\inc" -Recurse -File -Include *.ps1).Count
"matched $n files for -Include *.ps1 (expected 1)"
if ($n -eq 2) { 'REPRODUCED' } else { 'NOT REPRODUCED' }

Why it happens

In Windows PowerShell 5.1, -Include is ignored when combined with -LiteralPath. No error.

Fix

Do not use -Include. Filter with Where-Object.

Get-ChildItem -LiteralPath $dir -Recurse -File |
  Where-Object { $_.Extension -eq '.ps1' }

On the author's machine

the .md came back too (2 files)

Author's machine: Windows 11 / Windows PowerShell 5.1.26100 / Python 3.13.7 / Claude Code 2.1.304, Japanese Windows (code page 932). Checked 2026-10-20 to 22.

If you searched for

Related

cc-win-kit bundles the parts that avoid these traps from the start: a write guard (with onFailure: block), an unattended runner, a doctor that scans your files and hook settings, CLAUDE.md templates and the full test suite.

cc-win-kit ($19 on Payhip)

Other symptoms