Как получить доступ к путям файлов в Powershell, содержащих специальные символы?

Я вызываю powershell из приложения Java (через командную строку Windows), чтобы прочитать различные атрибуты файла.

например

powershell (get-item 'C:\Users\erlpm\Desktop\Temp\s p a c e s.txt').creationTime

Я заключаю путь к файлу в одинарные кавычки, потому что он может содержать пробелы. Это работало нормально, пока я не столкнулся с путем к файлу, содержащему квадратные скобки, которые, кажется, интерпретируются как подстановочный знак. Мне удалось решить это, добавив-literalPath параметр:

powershell (get-item -literalpath 'C:\Users\erlpm\Desktop\Temp\brackets[].txt').creationTime

Все идет нормально ... Но пути к файлам могут также содержать одинарные кавычки, знаки доллара, амперсанды и ... и все эти символы, похоже, имеют определенную функцию в powershell, для которой-literalPath Параметр, похоже, не работает. Я пытался заключить путь в двойные кавычки или экранировать символом `, но это тоже не решило мою проблему :-(

Любые предложения о том, как передать путь к файлу в Powershell, который может содержать пробелы, одинарные кавычки, квадратные скобки, амперсанды, знаки доллара и т. Д.?

Update: Кто-то здесь уже показал мне, как заставить его работать изнутри в Powershell, но каким-то образом ответ был удален?
Во всяком случае, я создал файл с именем$ & ' [].txt. This works form within Powershell (необходим для выхода из & amp;):

    PS C:\Users\erlpm> Get-Item -LiteralPath "C:\Users\erlpm\Desktop\Temp\`$ & ' [].txt"


    Directory: C:\Users\erlpm\Desktop\Temp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2012-08-23     14:22          0 $ & ' [].txt

Но когда я выполняю ту же команду Powershell через командную строку Windows, ...

C:\Users\erlpm>powershell Get-Item -LiteralPath "C:\Users\erlpm\Desktop\Temp\`$ & ' [].txt"

... я получаю эту ошибку:

    Ampersand not allowed. The & operator is reserved for future use; use "&" to pass ampersand as a string.
At line:1 char:55
+ Get-Item -LiteralPath C:\Users\erlpm\Desktop\Temp\`$ & <<<<  ' [].txt
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : AmpersandNotAllowed

С использованием-command параметр и положить команду powershell между{} выдает точно такое же сообщение об ошибке ...

C:\Users\erlpm>powershell -command {Get-Item -LiteralPath "C:\Users\erlpm\Desktop\Temp\`$ & ' [].txt"}

Ответы на вопрос(3)

Ваш ответ на вопрос