У меня есть следующий скрипт в Powershell ISE.Powershell ISE «Недопустимые символы в пути», когда пути трубопроводов к тестовому пути?
cd E:\Data
@"
xxxx.zip
yyyy.zip
"@ -split "`n" | % { echo "'$_'"; test-path -path "$_" -EA Stop }
Однако он всегда вызывает ошибку.
'xxxx.ZIP'
False
Illegal characters in path.
At line:175 char:27
+ % { echo "'$_'"; test-path <<<< -path "$_" -EA Stop }
+ CategoryInfo : InvalidArgument: (E:\Data\xxxx.ZIP:String) [Test-Path], ArgumentException
+ FullyQualifiedErrorId : ItemExistsArgumentError,Microsoft.PowerShell.Commands.TestPathCommand
Однако, я могу запустить Test-Path -path xxxx.zip
или просто жесткий код «xxxx.zip» в сценарии, и он прекрасно работает. В чем проблема струйной струны?
Update
Если изменить последний сценарий для % { echo "'$_'"; "test-path -path $_ -EA Stop" }
и копировать/вставить вывод ("test-path -path xxxx.ZIP -EA Stop
") в командной строке. Оно работает.
Update
Кажется, он работает в Powershell консоли. Ошибка ISE?
Спасибо, эта разница действительно раздражает. Может ли '-split' принимать регулярное выражение, чтобы оно работало для среды? – ca9163d9
@NicW да, уточните мой обновленный ответ – mjsr
@NickW Да, может. Я приведу пример, как в моем ответе. Джон сделал всю тяжелую работу, поэтому он заслуживает принятого ответа здесь, но не стесняйтесь повышать ;-) –