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(配列の文字列表現)の文字列連結を行ったため、文字列になります"Path1", "path2",したがって、前の最初の部分が最初の要素であると言わなければなりません。

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

したがって、問題を解決するには、各要素を括弧で囲みます。それとは別に、パスにスペースが含まれているため、問題は発生していません。

于 2012-04-17T05:20:12.147 に答える