/ / Powershell ISE “Незаконни знаци в пътя”, когато тръбопроводите преминават по пътя на теста? - powershell, powershell-v2.0, powerhell-ise

Powershell ISE "Незаконни символи в пътя", когато тръбопроводните пътища към тестовата пътека? - powershell, powershell-v2.0, 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:Dataxxxx.ZIP:String) [Test-Path], ArgumentException
+ FullyQualifiedErrorId : ItemExistsArgumentError,Microsoft.PowerShell.Commands.TestPathCommand

Но аз мога да бягам Test-Path -path xxxx.zip или просто твърд код "xxxx.zip" в скрипта и той работи добре. Какъв е проблемът с тръбопроводите?

Актуализация

Ако промените последния скрипт на % { echo ""$_""; "test-path -path $_ -EA Stop" } и копиране / поставяне на изхода ("test-path -path xxxx.ZIP -EA Stop") в командния ред.

Актуализация

Изглежда, че работи в console. Една ISE грешка?

Отговори:

4 за отговор № 1

В ISE тук-низът трябва да бъде разделен чрез a връщане на каретата, последвано от нова линия на powerhell, като този:

cd E:Data
@"
xxxx.zip
yyyy.zip
"@ -split "`r`n" | % { echo ""$_""; test-path -path "$_" -EA Stop }

Когато използвате тази функция:

function asciiToHex($a)
{
$b = $a.ToCharArray();
Foreach ($element in $b) {$c = $c + "%#x" + [System.String]::Format("{0:X}",
[System.Convert]::ToUInt32($element)) + ";"}
$c
}

за да преобразуваме тук-низа в ISE получаваме:

asciitohex $t
%#x78;%#x78;%#x78;%#x78;%#x2E;%#x7A;%#x69;%#x70;%#xD;%#xA;%#x79;%#x79;%#x79;%#x79;%#x2E;%#x7A;%#x69;%#x70;

обаче в powerhell конзолата ние получаваме

asciitohex $t
%#x78;%#x78;%#x78;%#x78;%#x2E;%#x7A;%#x69;%#x70;%#xA;%#x79;%#x79;%#x79;%#x79;%#x2E;%#x7A;%#x69;%#x70;

3 за отговор № 2

Пример за работа както в ISE, така и в конзолата, като се използва нормален израз с -split.

cd C:
@"
xxxx.zip
yyyy.zip
"@ -split "`r`n|`n" | % { echo ""$_""; test-path -path "$_" -EA Stop }

2 за отговор № 3

Сигурни ли сте, че точно този скрипт се изпълнява? Не мога да повторя проблема.

NTCs>  @"
>> xxxx.zip
>> yyyy.zip
>> "@ -split "`n"|%{echo ""$_"";test-path -path "$_" -ea stop}
>>
"xxxx.zip"
False
"yyyy.zip"
False

Обновено За да работите в ISE и конзолата поставете символа за връщане с знак за въпрос (0 или 1 случай):

  @"
xxxx.zip
yyyy.zip
"@ -split "`r?`n"|%{echo ""$_"";test-path -path "$_" -ea stop}