0

DFS namespace (e.x. "\my.domain.com\NS1") with folders that don't have a target:

"\\my.domain.com\NS1\target1\" > Target: "\\myserver.my.domain.com\target1_share\"
"\\my.domain.com\NS1\folder\" > No target
"\\my.domain.com\NS1\folder\target2\" > Target: "\\myserver2.my.domain.com\target2_share\"
"\\my.domain.com\NS1\folder\target3\" > Target: "\\myserver3.my.domain.com\target3_share\"
"\\my.domain.com\NS1\target4\" > Target: "\\myserver4.my.domain.com\target4_share\"

Output:

DFS Folder                                         Target
"\\my.domain.com\NS1\target1\"                     "\\myserver.my.domain.com\target1_share\"
"\\my.domain.com\NS1\folder\target2\"              "\\myserver2.my.domain.com\target2_share\"
"\\my.domain.com\NS1\folder\target3\"              "\\myserver3.my.domain.com\target3_share\"
"\\my.domain.com\NS1\target4\"                     "\\myserver4.my.domain.com\target4_share\"

Export data to CSV

reparsePoint I found was the indicator that a folder has a target according to the file system.

function Get-DFSTargetRecurse($dfsnRoot){
    $allDfsnTargetPaths = @()
    $folders = Get-ChildItem $dfsnRoot.FullName
    ForEach($folder in $folders){
        $i = 0
        While($folder.Attributes.ToString() -notLike "*reparsePoint*"){
            $i++
            $folder = Get-ChildItem $folder.FullName
            Get-DFSTargetRecurse($folder)
        }
        if($folder.Attributes.ToString() -like "*reparsePoint*"){
            Try{
                $dfsnTarget = Get-DfsnFolderTarget -path $folder
                $data = [PSCustomObject]@{
                    "NamespacePath" = $dfsnTarget.NamespacePath
                    "TargetPath" = $dfsnTarget.TargetPath
                    "RecurseLevel" = $i
                }
                $allDfsnTargetPaths += $data
            }
            Catch{
                Write-Error "Error: Unable to resolve Dfsn Target for $folder"
            }

        }
    }
    return $allDfsnTargetPaths
}

$dfsnRoot = Get-DfsnRoot "my.domain.com"
$output = Get-DFSTargetRecurse $dfsnRoot
$output | Export-CSV -Path "$env:USERPROFILE\Documents\DFSTargets.csv" -NoTypeInformation

Function is going too far down and not stopping at folders that have a DFS Target.

halldk
  • 13
  • 5

0 Answers0