【发布时间】:2023-03-14 08:16:01
【问题描述】:
我需要遍历一个文件夹名称数组,将它们传递给GCI,这样我就可以对其内容运行操作。不管我做什么,它总是给我这个错误:
我已经创建了一个数组:
$folders = "folder1","folder2","folder3"
然后对其进行迭代:
$folders | % {
gci -Path "D:\subftp\$_" -Recurse {
#do stuff here
}
}
我尝试了许多不同的选项,例如正则表达式替换以删除任何可能的非法字符(尽管 $folder.Count 显示没有不可见字符),我尝试将 $folders 转换为 C# ArrayList 但它是还是不行。我什至在使用前将路径变量本身连接成一个字符串。
奇怪的是,如果我尝试从命令行执行它,它工作正常。是什么赋予了?我正在运行 v5。
【问题讨论】:
-
你试过
-LiteralPath而不是-Path吗? -
请显示实际路径。
-
我试图避免识别信息,但它们都采用这种格式:“D:\SUBFTP\58-BANK”并且不会 -LiteralPath 忽略我试图传递的变量?
-
双引号内的变量将被扩展之前值绑定到参数
-
$folder.Count不会向您显示任何有用的信息 - 执行$_.IndexOfAny([System.IO.Path]::GetInvalidFileNameChars())并观察它是否返回除-1之外的任何值 other。 IE。"not?a?valid*filename".IndexOfAny([System.IO.Path]::GetInvalidFileNameChars())将返回 3,因为索引 3 处的?
标签: powershell