Effizientes DFS-Management mit PowerShell-Skripten

Machen Sie sich bereit, zu lernen, wie Sie bessere DFS PowerShell-Skripte schreiben können, indem Sie das Wissen nutzen, das Sie in diesem Tutorial gewinnen. In diesem Beitrag erfahren Sie alles über das Verwalten von DFS-Links in PowerShell!

Dieser Blog-Beitrag hat ein begleitendes Video, das von TechSnips-Mitarbeiter Scott Hurst erstellt wurde. Schauen Sie es sich gerne an oder lesen Sie weiter, wenn Sie Text bevorzugen!

Meine neuesten Videos

Distributed File System (DFS)-Links vereinfachen die Arbeit mit Netzwerkdateifreigaben. DFS-Links ermöglichen es Benutzern und Anwendungen, über einen virtuellen Pfadnamen auf freigegebene Ordner zuzugreifen. Sie können DFS Links mit PowerShell erstellen.

Ob Sie Active Directory oder ein anderes DFS-Produkt verwalten, das Schreiben von DFS PowerShell-Skripten wird Ihnen helfen, alle auftretenden Probleme zu bewältigen.

Dieser virtuelle Namensraum ermöglicht es Administratoren, freigegebene Ordner, die sich auf verschiedenen Servern befinden, zu präsentieren oder sogar den Speicherort eines freigegebenen Ordners vollständig transparent für die Verbraucher des Ordners zu ändern.

Benutzer müssen keine Lesezeichen aktualisieren und Anwendungen müssen nicht mit neuen Pfaden aktualisiert werden, wenn sich Dateiserver ändern.

Vorteile von DFS

Für die Benutzer wird der Zugriff auf Netzwerkfreigabeordner auf das Format <Namensraum>\Ordnername vereinfacht, was eine Reduzierung der Komplexität bei der Arbeit mit Ordnern, die auf entfernten Servern gespeichert sind, bedeutet.

Für Anwendungen müssen fest codierte Pfade zu Ressourcen im Netzwerk aufgrund einer Änderung des Netzwerkpfads nicht geändert werden. Ein einfaches Update des DFS Links und die Anwendung werden weiterhin auf die Ressourcen an ihrem neuen Speicherort zugreifen.

Voraussetzungen für die DFS-Serverrolle

  • Active Directory
  • Datei- und Speicherdienste-Rolle auf einem Windows Server installiert
  • Windows Server (Semi-Annual Channel)
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2012
  • Windows Server 2008 R2 Datacenter/Enterprise

Voraussetzungen

  • Ein Administratorkonto mit den entsprechenden Berechtigungen
  • RSAT-Tools mit den „File Services-Tools – DFS-Verwaltungstools“ installiert

Einrichten Ihrer DSC PowerShell-Skripte

Zuerst laden Sie RSAT herunter und installieren Sie es. Anschließend müssen Sie alle erforderlichen Windows-Funktionen installieren. Dadurch wird die DFS-Verwaltung-GUI, das DFS-Namespaces-Modul für Windows PowerShell zur Erstellung von DFS-Links mit PowerShell und deren Verwaltung sowie Befehlszeilentools installiert, es werden jedoch keine DFS-Dienste auf dem Server installiert.

Install-WindowsFeature FS-DFS-Namespace, RSAT-DFS-Mgmt-Con

Gängige DFS-Befehle

Sie können Namespaces mithilfe der DFS-Verwaltung-GUI, der DFS-Namespace (DFSN)-Cmdlets in PowerShell, der DfsUtil-Befehle oder Skripten, die WMI aufrufen, verwalten.

Einige gängige PowerShell-Befehle sind:

  • Get-DfsnRoot – Ermittelt alle DFS-Namespaces in der aktuellen Domäne – Wird häufig verwendet, um verfügbare Namespaces in der aktuellen Domäne zu überprüfen
  • New-DfsnFolder – Erstellt einen neuen DFS-Ordner
    – Wird häufig verwendet, um einen neuen DFS-Ordner in einem Namespace zu erstellen
  • New-DfsnFolderTarget – Weist Pfad(e) einem DFS-Ordner zu
    – Wird häufig verwendet, um einem DFS-Ordner einen oder mehrere Netzwerkordnerpfade zuzuweisen
  • Remove-DfsnFolderTarget – Entfernt einen Pfad aus einem DFS-Ordner, entfernt jedoch nicht den DFS-Ordner.
    – Wird häufig verwendet, um einen oder mehrere Netzwerkordnerpfade aus einem DFS-Ordner zu entfernen
  • Remove-DfsnFolder – Entfernt einen Ordner und alle seine Pfade
    – Wird häufig verwendet, um einen DFS-Ordner aus einem Namespace zu entfernen

DFS-Namespaces finden

Wir beginnen damit, uns einen Überblick über alle online und verfügbaren Namespaces in der aktuellen Domäne mit dem Befehl Get-DfsnRoot zu verschaffen.

$Domain = 'tech.io'
(Get-DfsnRoot -Domain $Domain).Where( {$_.State -eq 'Online'} ) | Select-Object -ExpandProperty Path

Dies zeigt, dass es in dieser Domäne zwei Namespaces gibt, die Online sind.

Finding DFS roots

DFS-Ordner finden

Mit dem Befehl Get-DfsnFolder können wir die DFS Ordner in jedem Namespace auflisten.

$Domain = 'tech.io'
Get-DfsnFolder -Path "\\$Domain\AppRoot\*" | Select-Object -ExpandProperty Path
Get-DfsnFolder -Path "\\$Domain\DFSRoot\*" | Select-Object -ExpandProperty Path

Aus dieser Ausgabe können wir sehen, dass es im AppRoot-Namespace keinen DFS Ordner mit dem Namen PowerShell gibt.

Finding DFS folders

In diesem Beispiel haben wir einen replizierten Ordner namens PowerShell auf unseren drei Dateiservern; FileServer01, FileServer02 und Datacenter.

Das Ziel ist es, diesen replizierten Ordner über einen einzigen Pfad mit unseren Admins zu teilen.

Dazu erstellen wir einen neuen DFS Link-Ordner im AppRoot Namespace mit dem Namen PowerShell unter Verwendung von New-DfsnFolder und verweisen darauf auf den Dateifreigabe des Datacenter-Servers. Wir setzen den DFS OrdnerStatus auf Online und setzen den ZielpfadStatus auf Online.

$Domain = 'tech.io'
try {
    Get-DfsnFolderTarget -Path "\\$Domain\AppRoot\PowerShell" -ErrorAction Stop
} catch {
    Write-Host "Path not found. Clear to proceed" -ForegroundColor Green
}

$NewDFSFolder = @{
    Path = "\\$Domain\AppRoot\PowerShell"
    State = 'Online'
    TargetPath = '\\datacenter\FileShare\PowerShell'
    TargetState = 'Online'
    ReferralPriorityClass = 'globalhigh'
}

New-DfsnFolder @NewDFSFolder

# Überprüfen, ob der Ordner jetzt existiert:
Get-DfsnFolderTarget -Path "\\$Domain\AppRoot\PowerShell"

# Überprüfen, ob der neue DFS-Link mit dem Windows Explorer funktioniert
Invoke-Expression "explorer '\\$Domain\AppRoot\PowerShell\'"

In der DFS-Verwaltungsoberfläche sehen wir, dass der DFS-Ordner PowerShell nicht existiert.

Inspecting DFS folders in the GUI
The folder target UNC path

Lassen Sie uns nun den Windows Explorer aus einer PowerShell-Konsole ausführen und bestätigen, dass er nicht existiert.

Invoke-Expression "explorer "\\$Domain\AppRoot\PowerShell"

Wenn der Ordner nicht existiert, schreibt er die Ausgabe Pfad nicht gefunden. Fortfahren in grünem Text in das Terminalfenster, wie Sie unten sehen können.

Aus der Ausgabe sehen wir, dass der Ordner erstellt wurde, die Verweisprioritätsklasse auf Global-High gesetzt ist und der Status Online ist.

Inspecting DFS referral priority class and state

Die GUI bestätigt auch, was uns PowerShell gesagt hat.

Inspecting DFS referral priority class and state

und unser Pfad ist nun im Windows Explorer verfügbar.

DFS path available in Windows Explorer

Erstellen von DFS-Ordnerzielen

Jetzt, da wir erfolgreich den Powershell DFS Ordner im Namensraum erstellt haben, fügen Sie ihm einen zusätzlichen Ordnerziel-Pfad hinzu und setzen Sie diesen Pfad als Online mit Hilfe von New-DfsnFolderTarget. DFS PowerShell-Skripte ermöglichen es Ihnen, beliebig viele Komponenten hinzuzufügen.

$Domain = 'tech.io'

## Splitten der Einstellungen für eine einfache Lesbarkeit
$NewTPS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer01\FileShare\PowerShell'
    State = 'Online'
}

## Fügen Sie einen neuen Ordner auf dem Server 'FileServer01' hinzu & setzen Sie ihn als Online
New-DfsnFolderTarget @NewTPS

Bis zu diesem Punkt haben wir zwei unserer drei Server-Pfade hinzugefügt und sind online. Für unseren letzten Ordnerpfad möchten wir den Pfad hinzufügen, aber ihn nicht für Benutzer verfügbar machen. Fügen wir also einen Ordnerziel-Pfad zu unserem PowerShell DFS Ordner hinzu und setzen diesmal den DFS-Ordnerpfad-Status auf offline. Hierfür verwenden wir erneut New-DfsnFolderTarget.

$Domain = 'tech.io'
## Splitten der Einstellungen für eine einfache Lesbarkeit
$NewTPS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
    State = 'Offline'
}

## Fügen Sie einen neuen Ordner auf dem Server 'FileServer02' hinzu & setzen Sie ihn auf offline
New-DfsnFolderTarget @NewTPS
## Überprüfen Sie, ob der Ordner jetzt vorhanden ist:
Creating a new DFS folder target

Sie können sehen, dass der Pfad von FileServer01 und Datacenter derzeit Online ist und der Zustand von FileServer02 auf Offline gesetzt wurde.

DFS path status

Einstellen der DFS-Ordnerziele auf Offline oder Online

Wir können auch ändern, welche Server die Online und Offline Hosts sind, und sogar welcher Server der primäre Host des Dateipfads sein wird, indem wir Set-DfsnFolderTarget verwenden.

$Domain = 'tech.io'

## Die Einstellungen in einem Splatted-Hash-Table für den Pfad, der auf den Server mit dem Namen FileServer01 zeigt
$ChangeTPsFS1 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer01\FileShare\PowerShell'
    State = 'Offline'
}

## Setze den Ordner auf dem Serverpfad 'FileServer01' auf Offline
Set-DfsnFolderTarget @ChangeTPsFS1

## Die Einstellungen in einem Splatted-Hash-Table für den Pfad, der auf den Server mit dem Namen FileServer02 zeigt
$ChangeTPsFS2 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
    State = 'Online'
    ReferralPriorityClass = 'globalhigh'
}

## Setze den Ordner auf dem Server 'FileServer02' auf Online
Set-DfsnFolderTarget @ChangeTPsFS2

## Die Einstellungen in einem Splatted-Hash-Table für den Pfad, der auf den Server mit dem Namen Datacenter zeigt
$ChangeTPsFS3 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\datacenter\FileShare\PowerShell'
    ReferralPriorityClass = 'sitecostnormal'
}

## Ändere die Priorität des Ordners auf dem Server 'Datacenter' auf 'Normal'
Set-DfsnFolderTarget @ChangeTPsFS3

Wie unten zu sehen ist:

  • Der Pfad von FileServer01 wurde auf Offline geändert
  • Die Referenzprioritätsklasse von Datacenter wurde von global-high auf sitecost-normal geändert
  • Der Pfad von FileServer02 hat seinen Zustand auf Online geändert
  • Die Referenzprioritätsklasse von FileServer02 wurde auf global-high geändert
New status of DFS

Entfernen von DFS-Ordnerziel-Pfaden mit PowerShell

I try to vaccinate my code against the fat finger flu as much as possible. Here we will try to install a safety net before removing one of the folders by making sure that it is offline before deleting it.

# Überprüfe den Ziel-Pfad zum Server 'FileServer01' auf Offline und entferne den Ordnerziel-Pfad
if ((Get-DfsnFolderTarget -Path "\\$Domain\AppRoot\PowerShell" -TargetPath '\\FileServer01\FileShare\PowerShell').State -eq "Offline") {
    Remove-DfsnFolderTarget -Path "\\$Domain\AppRoot\PowerShell" -TargetPath '\\FileServer01\FileShare\PowerShell' -Force:$true
}

Auf Wiedersehen FileServer01 Ordner!

FileServer01 folder is removed

Für diejenigen, die die Option des Sicherheitsnetzes lieber vermeiden möchten, können wir euch, tapfere Seelen, auch unterbringen.

$Domain = 'tech.io'

## Die Einstellungen zerstören, wo der Pfad auf den Server namens 'FileServer02' zeigte
$DelFTS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
}

## Den DFS-Ordnerziel löschen
Remove-DfsnFolderTarget @DelFTS -Force:$true

Wir haben uns von dem Ordner FileServer02 verabschiedet.

FileServer02 fodder is removed

DFS-Ordner entfernen

Es war ein langer und verschlungener Weg, aber die Zeit für unseren DFS-Link ist gekommen. Wir können den PowerShell-Ordner und den DFS-Link mit dem Befehl Remove-DfsnFolder entfernen.

$Domain = 'tech.io'

## Den DFS-Ordner löschen
Remove-DfsnFolder -Path "\$Domain\AppRoot\PowerShell" -Force:$true
Removing DFS folder

A quick double-check of the DFS Management GUI shows our DFS link is no more.

Confirming DFS folder removal

Zusammenfassung

Das war’s! Du hast dich auf einen verschlungenen Weg aus DFS und PowerShell-Kung-Fu begeben. Ich hoffe, du hast jetzt einige Code-Schnipsel gesammelt, um dir beim Erstellen besserer PowerShell DFS-Skripte zu helfen!

Source:
https://adamtheautomator.com/dfs-powershell-scripts/