我以为我用$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是错误的吗,或者我如何通过将Get-Item和Get-ChildItem与-recurse相结合来让$containers包含$Path及其$subdirectories?
发布于 2012-08-14 04:37:20
在第一次调用get-item时,您没有将结果存储在数组中(因为它只有1项)。这意味着您不能在get-childitem行中将数组附加到该数组。只需将结果包装在如下所示的@()中,即可强制容器变量成为数组:
$containers = @(Get-Item -path $Path | ? {$_.psIscontainer})
$containers += Get-ChildItem -path $Path -recurse | ? {$_.psIscontainer}发布于 2012-08-14 14:27:14
使用Get-Item获取父路径,使用Get-ChildItem获取父子节点:
$parent = Get-Item -Path $Path
$child = Get-ChildItem -Path $parent -Recurse | Where-Object {$_.PSIsContainer}
$parent,$child发布于 2012-08-14 04:04:34
下面的方法对我很有效:
$containers = Get-ChildItem -path $Path -recurse | Where-object {$_.psIscontainer}我最终得到的是$path的$path和所有子目录。
在您的示例中,您有$.psIscontainer,但它应该是$_.psIscontainer。这可能也是您的命令的问题所在。
https://stackoverflow.com/questions/11941316
复制相似问题