如何用Get-Item或Get-ChildItem获取指定目录及其所有子目录?
如何用PowerShell获取指定目录及其所有子目录?
要获取k:\IT\abc目录本身及其所有子目录,直接结合Get-Item和Get-ChildItem就能实现需求:
方法一:合并两个命令的结果(推荐新手使用,逻辑清晰)
$root = "k:\IT\abc" # 先获取abc目录本身,再获取其所有子目录,合并结果 $targetDirs = @(Get-Item $root -Directory) + @(Get-ChildItem $root -Directory -Recurse)
Get-Item $root -Directory:单独获取abc目录本身Get-ChildItem $root -Directory -Recurse:获取abc下所有层级的子目录- 用
@()包裹确保结果为数组,再通过+合并两个数组,就能得到包含abc本身和所有子目录的完整列表
方法二:单命令简化写法(PowerShell 5.1及以上版本支持)
$root = "k:\IT\abc" Get-ChildItem -Path $root -Directory -Recurse -Include "$root", "*"
这个写法通过-Include参数同时指定根目录和所有子目录匹配规则,也能得到同样的结果。
为什么你之前的写法不生效?
- 第一次的代码
Get-ChildItem $root -Directory -Recurse:-Recurse参数只会遍历返回目标路径下的子目录,不会包含目标路径本身,因此拿不到abc目录。 - 第二次从
k:\IT递归:会遍历IT下的所有子目录(包括xyz),不符合你只操作abc及其子目录的需求。
内容的提问来源于stack exchange,提问作者RookieMistake
相关产品推荐
相关产品推荐

