我正在尝试定义一个文件路径数组,我可以循环并应用用户权限。其中一些路径中有空格,我试图定义数组变量的方式,我无法循环它们。
$rootSitePath = "C:\Path"
$paths = $rootSitePath + "\" + "Path1",
$rootSitePath + "\" + "Path with spaces",
$rootSitePath = "\" + "Path3"
foreach($path in $paths)
{
#do stuff
}
不确定我是否需要以某种方式逃脱?
答案 0 :(得分:3)
不,你不需要做任何特殊的事情 - 但是你需要在数组项周围添加括号,就像你上面的那样。尝试:
$rootSitePath = "C:\Path"
$paths = ($rootSitePath + "\" + "Path1"),
($rootSitePath + "\" + "Path with spaces"),
($rootSitePath + "\" + "Path3")
foreach($path in $paths)
{
get-childitem $path
}
答案 1 :(得分:1)
数组,
运算符的优先级高于+
运算符的优先级。
所以,如果你做的事情(简化例子):
$paths = $rootSitePath+"\"+"Path1","path2"
$paths
将是一个字符串,因为它确实执行了$rootSitePath\
和Path1 path2
的字符串连接(数组"Path1", "path2"
的字符串表示)。所以你必须说,
之前的第一部分是第一个元素:
$paths = ($rootSitePath+"\"+"Path1"),"path2"
因此,要解决您的问题,请将每个元素括在括号中。除此之外,你没有遇到问题,因为你的路径中有空格。