1

我正在尝试定义一个文件路径数组,我可以循环并应用用户权限。其中一些路径中有空格,我试图定义数组变量的方式,我不能循环它们。

$rootSitePath = "C:\Path"

$paths = $rootSitePath + "\" + "Path1",
         $rootSitePath + "\" + "Path with spaces",
         $rootSitePath = "\" + "Path3"

foreach($path in $paths)
{
   #do stuff
}

不确定我是否需要以某种方式逃跑??

4

2 回答 2

3

不,您不需要做任何特别的事情 - 但您确实需要在数组项周围加上括号,就像您在上面一样。尝试:

$rootSitePath = "C:\Path"

$paths = ($rootSitePath + "\" + "Path1"),
         ($rootSitePath + "\" + "Path with spaces"),
         ($rootSitePath + "\" + "Path3")

foreach($path in $paths)
{
   get-childitem $path
}
于 2012-04-17T04:45:13.620 回答
1

数组,运算符的优先级高于+连接运算符。

因此,如果您执行类似(简化示例)的操作:

$paths = $rootSitePath+"\"+"Path1","path2"

$paths将是一个字符串,因为它对$rootSitePath\and Path1 path2(string representation of the array "Path1", "path2") 进行了字符串连接。所以你不得不说,前面的第一部分,是第一个元素:

$paths = ($rootSitePath+"\"+"Path1"),"path2"

因此,要解决您的问题,请将每个元素括在括号中。除此之外,您没有遇到问题,因为您的路径中有空格。

于 2012-04-17T05:20:12.147 回答