When dealing with files and folders, some characters are considered illegal. Here is an easy way to get a list of the characters that Windows declared as illegal:
$invalidPath = -join [System.IO.Path]::GetInvalidPathChars() $invalidPath $invalidFile = -join [System.IO.Path]::GetInvalidFileNameChars() $invalidFile
In a path, a pipeline symbol is considered illegal, and that is exactly what you get when you try and use a pipeline symbol inside a path:
$path = "c:\test\invalid|file\path.txt" Test-Path $path
Test-Path : Illegal characters in path.
At line:2 char:1
+ Test-Path $path
+ ~~~~~~~~~~~~~~~