Efficiënt DFS-beheer met PowerShell-scripts

Maak je klaar om te leren hoe je betere DFS PowerShell-scripts kunt schrijven met behulp van de kennis die je in deze tutorial opdoet. In deze post leer je alles over het beheren van DFS-links in PowerShell!

Deze blogpost heeft een bijbehorende video gemaakt door TechSnips-bijdrager, Scott Hurst. Voel je vrij om te kijken of, als je de voorkeur geeft aan tekst, verder te lezen!

Mijn Laatste Video’s

Distributed File System (DFS) Links verminderen de complexiteit van het werken met netwerkbestandshares. DFS Links stellen gebruikers en applicaties in staat om een virtuele padnaam te gebruiken om verbinding te maken met gedeelde mappen. Je kunt DFS links maken met PowerShell.

Of je nu Active Directory beheert of een andere DFS-product, het schrijven van DFS PowerShell-scripts helpt je om eventuele problemen aan te pakken.

Dit virtuele namespace stelt beheerders in staat om gedeelde mappen te presenteren die zich op verschillende servers bevinden, of zelfs de locatie van een gedeelde map te wijzigen, volledig transparant voor de gebruikers van die map.

Gebruikers hoeven geen bladwijzers bij te werken en applicaties hoeven niet te worden bijgewerkt met nieuwe paden wanneer bestandsservers veranderen.

DFS Voordelen

Voor gebruikers is de toegang tot netwerksharemappen vereenvoudigd tot een <namespace>\Mapnaam-indeling, waardoor de complexiteit van mappen op externe servers wordt verminderd.

Voor applicaties hoeven hardcoded paden naar bronnen op het netwerk niet te worden gewijzigd vanwege een verandering in het netwerkpad. Een eenvoudige update naar de DFS link en de applicatie blijft toegang hebben tot de bronnen op hun nieuwe locatie.

Vereisten voor de DFS Serverrol

  • Actieve Directory
  • Bestands- en opslagservices geïnstalleerd op een Windows Server
  • Windows Server (Semi-Annual Channel)
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2012
  • Windows Server 2008 R2 Datacenter/Enterprise

Vereisten

  • Een beheerdersaccount met de juiste machtigingen
  • RSAT-tools met de geïnstalleerde ‘File Services Tools – DFS Management Tools’

Aan de slag met uw DSC PowerShell-scripts

Ten eerste moet u RSAT downloaden en installeren. Vervolgens moet u alle benodigde Windows-functies installeren. Dit installeert de DFS Management GUI, de DFS Namespaces module voor Windows PowerShell om DFS links te maken en te beheren met PowerShell, en opdrachtregelhulpprogramma’s, maar het installeert geen DFS-services op de server.

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

Veelvoorkomende DFS-opdrachten

U kunt namespaces beheren met behulp van de DFS Management GUI, de DFS Namespace (DFSN) cmdlets in PowerShell, de DfsUtil commando’s, of scripts die WMI aanroepen.

Enkele veelvoorkomende PowerShell-opdrachten zijn:

  • Get-DfsnRoot – Ontdek alle DFS-naamruimten in het huidige domein – Wordt vaak gebruikt om beschikbare naamruimten in het huidige domein te controleren
  • New-DfsnFolder – Maak een nieuwe DFS-mapnaam
    – Wordt vaak gebruikt om een nieuwe DFS-map te maken in een naamruimte
  • New-DfsnFolderTarget – Wijs pad(en) toe aan een DFS-mapnaam
    – Wordt vaak gebruikt om één of meer netwerkmap-paden toe te wijzen aan een DFS-map
  • Remove-DfsnFolderTarget – Verwijdert een pad uit een DFS-map maar verwijdert de DFS-map niet
    – Wordt vaak gebruikt om één of meer netwerkmap-paden uit een DFS-map te verwijderen
  • Remove-DfsnFolder – Verwijdert een map en al zijn paden
    – Wordt vaak gebruikt om een DFS-map uit een naamruimte te verwijderen

Het vinden van DFS-naamruimten

We beginnen met het krijgen van een idee van alle online en beschikbare naamruimten in het huidige domein met behulp van de Get-DfsnRoot cmdlet.

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

Dit toont aan dat er twee naamruimten zijn die Online zijn in dit domein.

Finding DFS roots

Het vinden van DFS-mappen

Met behulp van het Get-DfsnFolder commando kunnen we de DFS mappen in elke naamruimte weergeven.

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

Uit deze output kunnen we zien dat in de AppRoot-naamruimte er geen DFS map is met de naam PowerShell.

Finding DFS folders

In dit voorbeeld hebben we een gerepliceerde map genaamd PowerShell op onze drie bestandsservers: FileServer01, FileServer02 en Datacenter.

Het doel is om deze gerepliceerde map te delen met onze beheerders via één pad.

Om dit te doen, zullen we een nieuwe DFS koppeling map aanmaken in de AppRoot naamruimte genaamd PowerShell met behulp van New-DfsnFolder en het verwijzen naar de bestandsshare van de datacenterserver. We zullen de DFS map status instellen op Online en de Doelpad status instellen op 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

# Controleer nu of de map bestaat:
Get-DfsnFolderTarget -Path "\\$Domain\AppRoot\PowerShell"

# Controleer of de nieuwe DFS-koppeling werkt met Windows Verkenner
Invoke-Expression "explorer '\\$Domain\AppRoot\PowerShell\'"

In de DFS-beheerinterface kunnen we zien dat de PowerShell DFS map niet bestaat.

Inspecting DFS folders in the GUI
The folder target UNC path

Laten we nu Windows Verkenner uitvoeren vanuit een PowerShell-console en bevestigen dat deze niet bestaat.

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

Als de map niet bestaat, wordt de uitvoer Pad niet gevonden. Klaar om door te gaan in groene tekst in het terminalvenster geschreven, zoals u hieronder kunt zien.

Uit de uitvoer zien we dat de map is aangemaakt, de Verwijzingsprioriteit Klasse is ingesteld op Globaal-Hoog en de Status is Online.

Inspecting DFS referral priority class and state

De GUI bevestigt ook wat PowerShell ons heeft verteld.

Inspecting DFS referral priority class and state

en ons pad is nu beschikbaar in Windows Verkenner.

DFS path available in Windows Explorer

Het aanmaken van DFS-mapdoelen

Nu we succesvol de Powershell DFS map hebben aangemaakt in de namespace, voeg een extra mapdoelpad toe en stel dat pad in als Online met behulp van New-DfsnFolderTarget. DFS PowerShell-scripts stellen u in staat om een willekeurig aantal componenten toe te voegen.

$Domain = 'tech.io'

## Splat de instellingen voor gemakkelijke leesbaarheid
$NewTPS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer01\FileShare\PowerShell'
    State = 'Online'
}

## Voeg nieuwe map toe op de server 'FileServer01' & stel Online in
New-DfsnFolderTarget @NewTPS

Tot nu toe hebben we twee van onze drie serverpaden toegevoegd en online gezet. Voor ons laatste map-pad willen we het pad toevoegen maar niet beschikbaar maken voor gebruikers. Laten we dus een mapdoelpad toevoegen aan onze PowerShell DFS map en deze keer de DFS-oudermapstatus instellen op offline, we zullen opnieuw gebruikmaken van New-DfsnFolderTarget.

$Domain = 'tech.io'
## Splat de instellingen voor gemakkelijke leesbaarheid
$NewTPS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
    State = 'Offline'
}

## Voeg nieuwe map toe op de server 'FileServer02' & zet deze op Offline
New-DfsnFolderTarget @NewTPS
## Controleer of de map nu bestaat:
Creating a new DFS folder target

Je kunt zien dat het pad van FileServer01 en Datacenter momenteel Online is en de status van FileServer02 is ingesteld op Offline.

DFS path status

DFS-mapdoelpaden instellen op Offline of Online.

We kunnen ook wijzigen welke servers de Online en Offline hosts zijn, en zelfs welke server de primaire host van het bestandspad zal zijn met behulp van Set-DfsnFolderTarget.

$Domain = 'tech.io'

## De instellingen samenvoegen waarbij het pad naar de server met de naam FileServer01 wees
$ChangeTPsFS1 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer01\FileShare\PowerShell'
    State = 'Offline'
}

## Stel de map op het serverpad 'FileServer01' in op Offline
Set-DfsnFolderTarget @ChangeTPsFS1

## De instellingen samenvoegen waarbij het pad naar de server met de naam FileServer02 wees
$ChangeTPsFS2 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
    State = 'Online'
    ReferralPriorityClass = 'globalhigh'
}

## Stel de map op de server 'FileServer02' in op Online
Set-DfsnFolderTarget @ChangeTPsFS2

## De instellingen samenvoegen waarbij het pad naar de server met de naam Datacenter wees
$ChangeTPsFS3 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\datacenter\FileShare\PowerShell'
    ReferralPriorityClass = 'sitecostnormal'
}

## Verander de prioriteit van het mappad van de server 'Datacenter' naar 'Normaal'
Set-DfsnFolderTarget @ChangeTPsFS3

Zoals u hieronder kunt zien:

  • Het pad van FileServer01 is veranderd naar Offline
  • De ReferralPriorityClass van de server Datacenter is veranderd van global-high naar sitecost-normal
  • Het pad van FileServer02 heeft zijn status veranderd naar Online
  • De ReferralPriorityClass van FileServer02 is veranderd naar global-high
New status of DFS

DFS-mapdoelpaden verwijderen met 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.

# Controleer het doelpad naar de server 'FileServer01' op Offline en verwijder het doeldoelpad van de map
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
}

Dag FileServer01 map!

FileServer01 folder is removed

Voor degenen die de optie van een vangnet willen overslaan, kunnen we u ook tegemoet komen, dappere zielen.

$Domain = 'tech.io'

## Instellingen neerzetten waar het pad naar de server genaamd 'FileServer02' wees
$DelFTS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
}

## Verwijder de DFS FolderTarget
Remove-DfsnFolderTarget @DelFTS -Force:$true

We hebben afscheid genomen van de FileServer02-map.

FileServer02 fodder is removed

DFS-mappen verwijderen

Het is een lange en kronkelige weg geweest, maar de tijd voor onze DFS link is gekomen. We kunnen de PowerShell-map en DFS link verwijderen met behulp van de Remove-DfsnFolder cmdlet.

$Domain = 'tech.io'

## Verwijder de DFS-map
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

Samenvatting

Dat is alles! Je hebt een kronkelige weg van DFS en PowerShell kung fu afgelegd. Hopelijk heb je nu wat codefragmenten verzameld om je te helpen betere PowerShell DFS-scripts te bouwen!

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