Gestion efficace de DFS avec des scripts PowerShell

Préparez-vous à apprendre comment écrire de meilleurs scripts PowerShell DFS en utilisant les connaissances que vous acquérez dans ce tutoriel. Dans cet article, vous apprendrez tout sur la gestion des liens DFS en PowerShell!

Cet article de blog est accompagné d’une vidéo réalisée par Scott Hurst, contributeur de TechSnips. N’hésitez pas à la regarder ou, si vous préférez le texte, continuez à lire!

Mes dernières vidéos

Les liens du système de fichiers distribué (DFS) réduisent la complexité du travail avec les partages de fichiers réseau. Les liens DFS permettent aux utilisateurs et aux applications d’accéder à un nom de chemin virtuel pour se connecter à des dossiers partagés. Vous pouvez créer des liens DFS avec PowerShell.

Que vous gériez Active Directory ou un autre produit DFS, l’écriture de scripts PowerShell DFS vous aidera à résoudre les problèmes auxquels vous êtes confronté.

Ce espace de noms virtuel permet aux administrateurs de présenter des dossiers partagés situés sur différents serveurs, ou même de modifier l’emplacement d’un dossier partagé, de manière totalement transparente pour les utilisateurs de ce dossier.

Les utilisateurs n’auront pas besoin de mettre à jour leurs favoris, et les applications n’auront pas besoin d’être mises à jour avec de nouveaux chemins lorsque les serveurs de fichiers changent.

Avantages du DFS

Pour les utilisateurs, l’accès aux dossiers partagés du réseau est simplifié sous la forme <namespace>\NomDossier, ce qui réduit la complexité associée aux dossiers stockés sur des serveurs distants.

Pour les applications, les chemins codés en dur vers les ressources sur le réseau n’ont pas besoin d’être modifiés en cas de changement du chemin réseau. Une simple mise à jour du lien DFS permettra à l’application de continuer à accéder aux ressources à leur nouvel emplacement.

Prérequis pour le rôle de serveur DFS

  • Active Directory
  • Rôle Services de fichiers et de stockage installés sur un serveur Windows
  • Windows Server (canal semi-annuel)
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2012
  • Windows Server 2008 R2 Datacenter/Enterprise

Prérequis

  • Un compte administrateur avec les autorisations appropriées
  • Outils RSAT avec l’installation des « Outils de services de fichiers – Outils de gestion DFS »

Configuration de vos scripts PowerShell DSC

Tout d’abord, téléchargez et installez RSAT. Ensuite, vous devez installer toutes les fonctionnalités Windows nécessaires. Cela installera l’interface graphique de gestion DFS, le module DFS Namespaces pour Windows PowerShell pour créer des liens DFS avec PowerShell et les gérer, ainsi que des outils en ligne de commande, mais cela n’installe aucun service DFS sur le serveur.

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

Commandes DFS courantes

Vous pouvez administrer les espaces de noms en utilisant l’interface graphique de gestion DFS, les cmdlets DFS Namespace (DFSN) en PowerShell, les commandes DfsUtil, ou des scripts qui appellent WMI.

Voici quelques commandes PowerShell courantes :

  • Get-DfsnRoot – Découvrir tous les espaces de noms DFS dans le domaine actuel – Couramment utilisé pour vérifier les espaces de noms disponibles dans le domaine actuel
  • New-DfsnFolder – Créer un nouveau nom de dossier DFS
    – Couramment utilisé pour créer un nouveau dossier DFS dans un espace de noms
  • New-DfsnFolderTarget – Assigner des chemins à un nom de dossier DFS
    – Couramment utilisé pour attribuer un ou plusieurs chemins de dossiers réseau à un dossier DFS
  • Remove-DfsnFolderTarget – Supprime un chemin d’un dossier DFS mais ne supprime pas le dossier DFS.
    – Couramment utilisé pour supprimer un ou plusieurs chemins de dossiers réseau d’un dossier DFS
  • Remove-DfsnFolder – Supprime un dossier et tous ses chemins
    – Couramment utilisé pour supprimer un dossier DFS d’un espace de noms

Recherche d’espaces de noms DFS

Nous commencerons par avoir une idée de tous les espaces de noms en ligne et disponibles dans le domaine actuel en utilisant la commande Get-DfsnRoot.

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

Cela montre qu’il y a deux espaces de noms en ligne dans ce domaine.

Finding DFS roots

Recherche de dossiers DFS

En utilisant la commande Get-DfsnFolder, nous pouvons lister les dossiers DFS dans chaque espace de noms.

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

D’après cette sortie, nous pouvons voir que dans l’espace de noms « AppRoot », il n’y a pas de dossier DFS nommé « PowerShell ».

Finding DFS folders

Dans cet exemple, nous avons un dossier répliqué nommé PowerShell sur nos trois serveurs de fichiers ; FileServer01, FileServer02 et Datacenter.

Le but est de partager ce dossier répliqué avec nos administrateurs en utilisant un seul chemin.

Pour ce faire, nous allons créer un nouveau dossier DFS lien dans l’espace de noms AppRoot appelé PowerShell en utilisant New-DfsnFolder et le pointer vers le partage de fichiers du serveur du centre de données. Nous allons définir l’état du dossier DFS sur En ligne et définir l’état de CheminCible sur En ligne.

$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

# Vérifier maintenant que le dossier existe :
Get-DfsnFolderTarget -Path "\\$Domain\AppRoot\PowerShell"

# Vérifier que le nouveau lien DFS fonctionne à l'aide de l'Explorateur Windows
Invoke-Expression "explorer '\\$Domain\AppRoot\PowerShell\'"

Dans l’interface graphique de gestion DFS, nous pouvons voir que le dossier DFS PowerShell n’existe pas.

Inspecting DFS folders in the GUI
The folder target UNC path

Voyons maintenant exécuter l’Explorateur Windows depuis une console PowerShell et confirmons qu’il n’existe pas.

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

Si le dossier n’existe pas, il écrira la sortie Chemin introuvable. Prêt à continuer en texte vert dans la fenêtre du terminal, comme vous pouvez le voir ci-dessous.

D’après la sortie, nous constatons que le dossier a été créé, la Classe de priorité de renvoi est définie sur Global-High et l’État est En ligne.

Inspecting DFS referral priority class and state

L’interface graphique confirme également ce que PowerShell nous a dit.

Inspecting DFS referral priority class and state

et notre chemin est maintenant disponible dans l’Explorateur Windows.

DFS path available in Windows Explorer

Création des cibles de dossier DFS

Maintenant que nous avons créé avec succès le dossier DFS « Powershell » dans l’espace de noms, ajoutons un chemin de destination de dossier supplémentaire et définissons ce chemin comme « En ligne » en utilisant « New-DfsnFolderTarget ». Les scripts PowerShell DFS vous permettent d’ajouter un nombre illimité de composants.

$Domain = 'tech.io'


## Étendre les paramètres pour une meilleure lisibilité

$NewTPS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer01\FileShare\PowerShell'
    State = 'Online'
}


## Ajouter un nouveau dossier situé sur le serveur 'FileServer01' et le définir comme En ligne

New-DfsnFolderTarget @NewTPS

Jusqu’à présent, nous avons ajouté et mis en ligne deux de nos trois chemins de serveur. Pour notre dernier chemin de dossier, nous voulons ajouter le chemin mais ne pas le rendre disponible aux utilisateurs. Ajoutons donc un chemin de destination de dossier à notre dossier DFS « Powershell » et cette fois-ci, définissons l’état du chemin DFS comme hors ligne en utilisant « New-DfsnFolderTarget ».

$Domain = 'tech.io'

## Étendre les paramètres pour une meilleure lisibilité

$NewTPS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
    State = 'Offline'
}


## Ajouter un nouveau dossier situé sur le serveur 'FileServer02' et le définir comme hors ligne

New-DfsnFolderTarget @NewTPS

## Vérifier que le dossier existe maintenant :
Creating a new DFS folder target

Vous pouvez voir que le chemin de « FileServer01 » et de « Datacenter » est actuellement en ligne, tandis que l’état du chemin de « FileServer02 » a été défini comme hors ligne.

DFS path status

Définir les chemins de destination des dossiers DFS comme hors ligne ou en ligne.

Nous pouvons également modifier les serveurs qui sont les hôtes en ligne et hors ligne, et même définir notre serveur comme l’hôte principal du chemin d’accès du fichier en utilisant la commande `Set-DfsnFolderTarget`.

$Domain = 'tech.io'

## Utilisation des paramètres pour pointer vers le serveur nommé FileServer01
$ChangeTPsFS1 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer01\FileShare\PowerShell'
    State = 'Offline'
}

## Définition du dossier situé sur le serveur FileServer01 comme étant hors ligne
Set-DfsnFolderTarget @ChangeTPsFS1

## Utilisation des paramètres pour pointer vers le serveur nommé FileServer02
$ChangeTPsFS2 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
    State = 'Online'
    ReferralPriorityClass = 'globalhigh'
}

## Définition du dossier situé sur le serveur FileServer02 comme étant en ligne
Set-DfsnFolderTarget @ChangeTPsFS2

## Utilisation des paramètres pour pointer vers le serveur nommé Datacenter
$ChangeTPsFS3 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\datacenter\FileShare\PowerShell'
    ReferralPriorityClass = 'sitecostnormal'
}

## Modification de la priorité du dossier du serveur Datacenter vers 'Normal'
Set-DfsnFolderTarget @ChangeTPsFS3

Comme vous pouvez le voir ci-dessous:

  • Le chemin d’accès du serveur FileServer01 a été modifié pour être hors ligne
  • La classe de priorité de référence du serveur Datacenter a été modifiée en ‘sitecost-normal’ au lieu de ‘global-high’
  • Le chemin d’accès du serveur FileServer02 a été modifié pour être en ligne
  • La classe de priorité de référence du serveur FileServer02 a été modifiée en ‘global-high’
New status of DFS

Suppression des chemins d’accès cibles de dossiers DFS avec 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.

# Vérification du chemin d'accès cible pour le serveur FileServer01, le passage en mode hors ligne et suppression du chemin d'accès cible du dossier
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
}

Au revoir dossier FileServer01!

FileServer01 folder is removed

Pour ceux qui préfèrent renoncer à l’option filet de sécurité, nous pouvons vous accommoder, braves âmes, également.

$Domain = 'tech.io'

## Éclatement des paramètres où le chemin pointait vers le serveur nommé 'FileServer02'
$DelFTS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
}

## Supprimer la cible de dossier DFS
Remove-DfsnFolderTarget @DelFTS -Force:$true

Nous avons dit adieu au dossier FileServer02.

FileServer02 fodder is removed

Suppression des dossiers DFS

Cela a été un long chemin tortueux, mais le temps de notre lien DFS est venu à sa fin. Nous pouvons supprimer le dossier PowerShell et le lien DFS à l’aide de la cmdlet Remove-DfsnFolder.

$Domain = 'tech.io'

## Supprimer le dossier DFS
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

Résumé

C’est tout ! Vous avez parcouru un long chemin de DFS et de kung-fu PowerShell. J’espère que vous avez maintenant acquis quelques extraits de code pour vous aider à créer de meilleurs scripts PowerShell DFS !

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