我以为我收到了所有的容器
$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组合来获取$ container以包含$Path
及其$子目录?
答案 0 :(得分:4)
在第一次调用get-item时,您不会将结果存储在数组中(因为它只有1项)。这意味着您无法在get-childitem
行中将数组附加到其中。通过将结果包装成@()
,只需将您的容器变量强制为数组:
$containers = @(Get-Item -path $Path | ? {$_.psIscontainer})
$containers += Get-ChildItem -path $Path -recurse | ? {$_.psIscontainer}
答案 1 :(得分:1)
使用Get-Item
获取父路径,Get-ChildItem
获取父路径:
$parent = Get-Item -Path $Path
$child = Get-ChildItem -Path $parent -Recurse | Where-Object {$_.PSIsContainer}
$parent,$child
答案 2 :(得分:0)
以下对我有用:
$containers = Get-ChildItem -path $Path -recurse | Where-object {$_.psIscontainer}
我最终得到的是$path
以及$path
的所有子目录。
在您的示例中,您有$.psIscontainer
但它应该是$_.psIscontainer
。这可能也是你的命令的问题。