Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save justpowershell/488f8c6936dfb7be8178e337cebaa250 to your computer and use it in GitHub Desktop.
Save justpowershell/488f8c6936dfb7be8178e337cebaa250 to your computer and use it in GitHub Desktop.
Powershell script to get a list of DFS folder targets for all DFS folders under a defined path and test if those paths are valid from the location running the script.
$Servers = @("SERVER01","SERVER02","SERVER03")
$FolderPaths = $Servers | foreach {
Get-ChildItem "\\$_\DFSShare$"
} | Sort Path
$FolderPaths | Export-Csv "FolderPaths-$(Get-Date -format yyyy-MM-dd).csv" -NoTypeInformation
$TestPaths = (($FolderPaths).FullName | Sort-Object).Trimend('\')
$DFSPaths = ((Import-CSV "DFS-$(Get-Date -format yyyy-MM-dd).csv").TargetPath | Where-Object {($_ -ilike "*SERVER*") | Sort-Object).Trimend('\')
$TestPaths | Where-Object {$DFSPaths -notcontains $_}
[CmdletBinding()]
param(
$DFSPath #Example:= '\\example.com\folder\*\whatever'
)
Write-Progress "Getting all DFS folders for $DFSPath (this can take a very long time)" -PercentComplete -1
$DFSTree = Get-DfsnFolder $DFSPath
$i = 1
$DFSTree | ForEach-Object{
Write-Progress "Getting DFS Folder Targets for $($_.Path)" -PercentComplete (($i / $DFSTree.Count) *100)
$DFSTargets = @(Get-DfsnFolderTarget $_.Path | Select Path,TargetPath,State)
foreach ($DFSTarget in $DFSTargets){
$Result = [ordered]@{
Path = $DFSTarget.Path
TargetPath = $DFSTarget.TargetPath
State = $DFSTarget.State
"ValidFrom_$Env:ComputerName" = Test-Path $DFSTarget.Path
}
New-Object PSObject -Property $Result
}
$i++
} | Sort Path | Export-Csv "DFS-$(Get-Date -format yyyy-MM-dd).csv" -NoTypeInformation
@justpowershell
Copy link
Author

Fixed the scenario where a DFS folder with multiple targets returned an array that would show as "System.Object[]" in the CSV export.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment