請求 [01].txtというファイルが存在するのに、PowerShellのGet-Itemで見つからない場合は、パスの解釈を確認します。-Pathは角括弧などをワイルドカードとして扱うことがあり、書いた文字列そのものを探しているとは限りません。
-LiteralPathは、対応するコマンドで指定したパスを文字どおりに扱います。日本語や空白を引用符で囲むことと、ワイルドカードの解釈を止めることは別なので、それぞれの役割を分けて確かめます。
角括弧を含む練習用ファイル
次の例は一時フォルダーの下に新しい場所を作り、練習用のテキストを1件だけ保存します。元からあるファイルを変更したり削除したりする処理はありません。Windows PowerShell 5.1とPowerShell 7で使える形です。
$practiceDir = Join-Path ([IO.Path]::GetTempPath()) ('literal-' + [guid]::NewGuid())
[IO.Directory]::CreateDirectory($practiceDir) | Out-Null
$practiceFile = Join-Path $practiceDir '請求 [01].txt'
Set-Content -LiteralPath $practiceFile -Value 'practice' -Encoding utf8
$item = Get-Item -LiteralPath $practiceFile -ErrorAction Stop
$item.Name
$item.Length
期待する名前は請求 [01].txtです。ファイルの長さは書き出した文字コードや改行によって変わるため、固定のバイト数を期待しません。ここでは名前を取り違えずに取得できたことを見ます。
[IO.Directory]::CreateDirectoryには新しく決めた一意の場所だけを渡しています。既存の業務フォルダーにこの練習を混ぜず、表示された場所を控えて試してください。
引用符だけでは解決しない場合
たとえばGet-Item -Path $practiceFileでは変数に入っている角括弧も-Pathのパターンとして解釈されます。パス全体を引用符で囲んだから、ワイルドカードの指定まで無効になったとは考えないようにします。
一方、引用符には空白を含む値をひとつの引数にする役割があります。文字列の中の変数を展開したい場合と、書いた内容をそのまま渡したい場合でも扱いが変わります。-LiteralPathは、シェルが引数を作る前の引用符の役割を置き換えるものではありません。
コマンドごとの対応を調べる
すべてのコマンドに-LiteralPathがあるわけではありません。使うコマンドのヘルプで、対応する引数を確認してください。PowerShellのコマンドへ渡すパスと、別の実行ファイルが独自に読むパスでも、解釈は同じとは限りません。
既にパスが取得できている処理では、ファイル名を取り出して別の文字列へ作り直すより、取得元のフルパスを保ったまま渡すと、区切りや記号の取り違えを減らせます。書き込みを伴う場合は、どのファイルを指定しているかを先に表示して確認します。
見つからない理由を分ける
-LiteralPathでも見つからなければ、現在の作業場所、実際の保存先、入力した名前、アクセス権を確認します。ワイルドカードの問題と分かったわけではないので、角括弧を消して別名で探し続ける順番にはしません。
この例は新規の練習用ファイルで文字どおりのパスを読む確認です。共有フォルダーの権限や、実際の業務ファイルの状態まで調べた結果ではありません。最初に取得した名前とフルパスを見比べ、読みたい1件を指しているかを確かめてください。
関連する記事
pathlib入門|Windowsでも迷いにくいファイルパスの扱い方
WindowsタスクスケジューラでPythonを定期実行する方法
公式資料
Get-Item (Microsoft.PowerShell.Management) – PowerShell | Microsoft Learn
