2024年6月6日 星期四

PowerShell 通配符 Get-Item 無法帶有方括號名稱的檔案

PowerShell 通配符 Get-Item 無法帶有方括號名稱的檔案

這算是 PowerShell 5.1 預設給的方便的,不過在不知情的情況下就造成bug了

假設有一個 [1]File.txt 的檔案,於是就這樣獲取

Get-Item [1]File.txt

居然什麼都沒有,於是乎聰明如你,用引號總能解吧?

Get-Item "[1]File.txt"
Get-Item '[1]File.txt'


想不到吧很遺憾還是沒有辦法

這東西叫做通配符,內建在 Get-Item 裡的所才沒法通過引號處理的
about Wildcards - PowerShell | Microsoft Learn

下面是兩個能解的範例

# 使用函式接口 LiteralPath 
Get-Item -LiteralPath [1]File.txt

# 連帶反轉意符號一起傳進去 (雙引號不行傳入前就會被解掉了)
Get-Item '.\`[1`]File.txt'

方括號出現概率不是很高,但基本上只要量夠多基本就一定會有的東西,不知道的話有一天絕對會踩到的

沒有留言:

張貼留言