powershell - 将路径管道传递到测试路径时,PowerShell ISE “Illegal characters in path”?

标签 powershell powershell-2.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:\Data\xxxx.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”)复制/粘贴到命令行。有用。

更新

看来它可以在Powershell控制台中工作。 ISE错误?

最佳答案

在ISE中,应使用回车符和强力换行新行分隔此字符串,如下所示:

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中的here-string,我们得到:
asciitohex $t
%#x78;%#x78;%#x78;%#x78;%#x2E;%#x7A;%#x69;%#x70;%#xD;%#xA;%#x79;%#x79;%#x79;%#x79;%#x2E;%#x7A;%#x69;%#x70;

但是在Powershell控制台中,我们得到了
asciitohex $t
%#x78;%#x78;%#x78;%#x78;%#x2E;%#x7A;%#x69;%#x70;%#xA;%#x79;%#x79;%#x79;%#x79;%#x2E;%#x7A;%#x69;%#x70;

关于powershell - 将路径管道传递到测试路径时,PowerShell ISE “Illegal characters in path”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8763840/

相关文章:

security - 使用PowerShell V4通过gmail发送邮件

powershell - 在 PowerShell 中检索 MSIEXEC 退出代码

powershell - emacs Powershell与Powershell模式

c# - 通过 C# 代码的 Powershell 命令

windows - PowerShell WindowStyle -Hidden 适用于 Windows 10,但不适用于 Windows 7

windows - powershell 2.0重定向文件句柄异常

powershell - 仅复制项目/删除项目子内容而没有根文件夹?

powershell - FileSystemWatcher检测何时将文件 move 到文件夹

powershell - Powershell:没有创建文件夹的ExtractToDirectory

powershell - 在 ISE 中强制控制台输出?