Update Workflows/Windows/Windows Server/Roles/DFS/Creating and Configuring DFS Namespaces with Replication.md
All checks were successful
GitOps Automatic Deployment / GitOps Automatic Deployment (push) Successful in 8s

This commit is contained in:
2025-10-14 06:27:12 -06:00
parent 5a166255f2
commit f854330de7

View File

@@ -124,11 +124,16 @@ In the Replication wizard that appears after about a minute, you can configure t
### Checking DFS Status ### Checking DFS Status
You may want to put together a simple table report of the DFS namespaces, replication info, and target folders. You can run the following powershell script to generate a nice table-based report of the current structure of the DFS namespaces in your domain. You may want to put together a simple table report of the DFS namespaces, replication info, and target folders. You can run the following powershell script to generate a nice table-based report of the current structure of the DFS namespaces in your domain.
??? example "Powershell Reporting Script"
```powershell ```powershell
[CmdletBinding()] # Automatically detect current AD domain and use it as DFS prefix
param( try {
[string]$DomainPrefix = "\\bunny-lab.io" # Adjust if Different $Domain = ([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).Name
) $DomainPrefix = "\\$Domain"
} catch {
Write-Warning "Unable to detect domain automatically. Falling back to manual value."
$DomainPrefix = "\\bunny-lab.io"
}
Import-Module DFSN -ErrorAction Stop Import-Module DFSN -ErrorAction Stop
Import-Module DFSR -ErrorAction Stop Import-Module DFSR -ErrorAction Stop
@@ -244,9 +249,7 @@ foreach ($root in $roots) {
} }
} }
# Render as a PowerShell table (multi-line cells wrap) # Render as a PowerShell bordered grid with one-space left/right padding in every cell
#$rows | Format-Table -AutoSize -Wrap
function Write-DfsGrid { function Write-DfsGrid {
[CmdletBinding()] [CmdletBinding()]
param( param(
@@ -255,8 +258,8 @@ function Write-DfsGrid {
[string[]]$Columns = @('Namespace','Member Folder Target(s)','Replication Locations','Namespace Servers'), [string[]]$Columns = @('Namespace','Member Folder Target(s)','Replication Locations','Namespace Servers'),
# Reasonable max widths; tune to your console # Reasonable max widths; tune to your console (these are content+padding widths)
[int[]]$MaxWidths = @(50, 60, 50, 28), [int[]]$MaxWidths = @(70, 70, 52, 30),
[switch]$Ascii # use +-| instead of box-drawing if your console garbles Unicode [switch]$Ascii # use +-| instead of box-drawing if your console garbles Unicode
) )
@@ -286,9 +289,8 @@ function Write-DfsGrid {
return ($s.Substring(0, $w-1) + '…') return ($s.Substring(0, $w-1) + '…')
} }
# Materialize and compute widths # Materialize and compute widths (include one-space left/right padding for header and data)
$rows = @($Data | ForEach-Object { $rows = @($Data | ForEach-Object {
# Build a string-only hashtable per row for consistent measurement
$o = @{} $o = @{}
foreach ($c in $Columns) { $o[$c] = [string]($_.$c) } foreach ($c in $Columns) { $o[$c] = [string]($_.$c) }
[pscustomobject]$o [pscustomobject]$o
@@ -297,9 +299,10 @@ function Write-DfsGrid {
$widths = @() $widths = @()
for ($i=0; $i -lt $Columns.Count; $i++) { for ($i=0; $i -lt $Columns.Count; $i++) {
$col = $Columns[$i] $col = $Columns[$i]
$max = $col.Length # Start with header length including padding
$max = (" " + $col + " ").Length
foreach ($r in $rows) { foreach ($r in $rows) {
$len = ([string]$r.$col).Length $len = (" " + [string]$r.$col + " ").Length
if ($len -gt $max) { $max = $len } if ($len -gt $max) { $max = $len }
} }
$widths += [Math]::Min($max, $MaxWidths[$i]) $widths += [Math]::Min($max, $MaxWidths[$i])
@@ -318,10 +321,10 @@ function Write-DfsGrid {
} }
$line $line
} }
function DrawMid() { function DrawMid([string[]]$Columns, [int[]]$widths, $H) {
$line = $H.vt $line = $H.vt
for ($i=0; $i -lt $widths.Count; $i++) { for ($i=0; $i -lt $widths.Count; $i++) {
$line += TruncPad $Columns[$i] $widths[$i] $line += TruncPad (" " + $Columns[$i] + " ") $widths[$i]
$line += $H.vt $line += $H.vt
} }
$line $line
@@ -354,11 +357,11 @@ function Write-DfsGrid {
} }
$line $line
} }
function DrawRow($r) { function DrawRow($r, [string[]]$Columns, [int[]]$widths, $H) {
$line = $H.vt $line = $H.vt
for ($i=0; $i -lt $widths.Count; $i++) { for ($i=0; $i -lt $widths.Count; $i++) {
$val = [string]$r.($Columns[$i]) $val = [string]$r.($Columns[$i])
$line += TruncPad $val $widths[$i] $line += TruncPad (" " + $val + " ") $widths[$i]
$line += $H.vt $line += $H.vt
} }
$line $line
@@ -366,17 +369,17 @@ function Write-DfsGrid {
# Render with group separators between namespaces (when the Namespace cell is non-empty) # Render with group separators between namespaces (when the Namespace cell is non-empty)
Write-Host (DrawTop) Write-Host (DrawTop)
Write-Host (DrawMid) Write-Host (DrawMid -Columns $Columns -widths $widths -H $H)
Write-Host (DrawHeaderSep) Write-Host (DrawHeaderSep)
$first = $true $first = $true
foreach ($r in $rows) { foreach ($r in $rows) {
if (-not $first -and ([string]$r.$($Columns[0])) ) { if (-not $first -and ([string]$r.$($Columns[0])) ) {
# Namespace changed → draw a heavy-ish separator # Namespace changed → draw a separator
Write-Host (DrawSep) Write-Host (DrawSep)
} }
$first = $false $first = $false
Write-Host (DrawRow $r) Write-Host (DrawRow -r $r -Columns $Columns -widths $widths -H $H)
} }
Write-Host (DrawBottom) Write-Host (DrawBottom)