递归powershell目录对象丢失目录级别

时间:2016-11-09 23:05:39

标签: powershell recursion

当我执行以下代码时,假设X:\是一个多级目录树,它会在第二遍中开始抛出奇怪的错误。

例如,假设X:\具有以下结构

X:\
--1stLevelDir
----2ndLevelDir
--Another1stLevelDir
function recurse{
    param([System.IO.FileSystemInfo] $folder)
    foreach ($dir in GCI $folder -Directory) {
        Write-Output $dir.FullName
        recurse $dir
    }
}

recurse (get-item 'X:\')

该代码产生以下输出

X:\1stLevelDir
X:\1stLevelDir\2ndLevelDir
GCI : Cannot find path 'X:\2ndLevelDir' because it does not exist.
At foreach line

1 个答案:

答案 0 :(得分:2)

recurse $dir.FullName

[IO.DirectoryInfo]对象扩展为短名称,该名称被视为相对路径 - 并在您所在的文件夹中查找。

编辑:或

function recurse{
    param([System.IO.FileSystemInfo] $folder)
    foreach ($dir in GCI $folder.FullName -Directory) {
        Write-Output $dir.FullName
        recurse $dir
    }
}

recurse (get-item 'X:\')