3

我以为我得到了所有的容器 $containers = Get-ChildItem -path $Path -recurse | ? {$_.psIscontainer -eq $true},但它似乎只返回了我的$Path. 我真的很想$containers包含$Path及其子目录。我试过这个:

$containers = Get-Item -path $Path | ? {$_.psIscontainer -eq $true}
$containers += Get-ChildItem -path $Path -recurse | ? {$_.psIscontainer -eq $true}

但它不允许我这样做。我是不是用Get-ChildItem错了,或者我如何$Path通过将 Get-Item 和 Get-ChildItem 与 -recurse 组合来让 $containers 包含它及其 $subdirectories?

4

3 回答 3

5

在您第一次调用 get-item 时,您没有将结果存储在数组中(因为它只有一项)。这意味着您不能将数组附加到您的get-childitem行中。只需通过将结果包装成这样的形式来强制您的容器变量成为一个数组@()

$containers = @(Get-Item -path $Path | ? {$_.psIscontainer})
$containers += Get-ChildItem -path $Path -recurse | ? {$_.psIscontainer}
于 2012-08-13T20:37:19.933 回答
1

用于Get-Item获取父路径并Get-ChildItem获取父子路径:

$parent = Get-Item -Path $Path
$child = Get-ChildItem -Path $parent -Recurse | Where-Object {$_.PSIsContainer}
$parent,$child
于 2012-08-14T06:27:14.340 回答
0

以下对我有用:

$containers = Get-ChildItem -path $Path -recurse | Where-object {$_.psIscontainer}

我最终得到的$path$path.

在您的示例中,您有$.psIscontainer,但应该是$_.psIscontainer. 这也可能是您的命令的问题。

于 2012-08-13T20:04:34.493 回答