Gerenciamento Eficiente de DFS com Scripts do PowerShell

Fique pronto para aprender como escrever scripts DFS PowerShell mais eficientes usando o conhecimento adquirido neste tutorial. Nesta postagem, você aprenderá tudo sobre gerenciar links DFS no PowerShell!

Esta postagem no blog possui um vídeo complementar criado por Scott Hurst, colaborador da TechSnips. Sinta-se à vontade para assistir ou, se preferir texto, continue lendo!

Meus Vídeos Mais Recentes

Os Links do Sistema de Arquivos Distribuídos (DFS) reduzem a complexidade ao lidar com compartilhamentos de arquivos em rede. Os Links DFS permitem que usuários e aplicativos acessem um nome de caminho virtual para se conectar a pastas compartilhadas. Você pode criar links DFS com PowerShell.

Seja gerenciando o Active Directory ou outro produto DFS, escrever scripts DFS PowerShell o ajudará a lidar com qualquer problema que você encontrar.

Este espaço de nome virtual permite que administradores apresentem pastas compartilhadas localizadas em servidores diferentes ou até mesmo alterem a localização de uma pasta compartilhada, completamente transparente para os consumidores dessa pasta.

Os usuários não precisarão atualizar marcadores, e aplicativos não serão obrigados a serem atualizados com novos caminhos quando os servidores de arquivos mudarem.

Benefícios do DFS

Para os usuários, o acesso a pastas compartilhadas de rede é simplificado para o formato <namespace>\NomeDaPasta, uma redução na complexidade associada a pastas armazenadas em servidores remotos.

Para aplicações, os caminhos codificados diretamente para recursos na rede não precisam ser alterados devido a uma mudança no caminho da rede. Uma simples atualização para o link DFS e a aplicação continuará a acessar os recursos em sua nova localização.

Pré-requisitos para a Função do Servidor DFS

  • Active Directory
  • Função de Serviços de Arquivos e Armazenamento instalada em um Windows Server
  • Windows Server (Canal Semi-Anual)
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2012
  • Windows Server 2008 R2 Datacenter/Enterprise

Pré-requisitos

  • Uma conta de administrador com as permissões adequadas
  • Ferramentas RSAT com os ‘File Services Tools – DFS Management Tools’ instalados

Configurando seus Scripts do PowerShell DSC

Primeiro, faça o download e instale o RSAT. Em seguida, você precisa instalar todos os recursos necessários do Windows. Isso instalará a interface gráfica do DFS Management, o módulo DFS Namespaces para o Windows PowerShell para criar links DFS com PowerShell e gerenciá-los, e ferramentas de linha de comando, mas não instalará nenhum serviço DFS no servidor.

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

Comandos Comuns do DFS

Você pode administrar namespaces usando a interface gráfica do DFS Management, os cmdlets DFS Namespace (DFSN) no PowerShell, os comandos DfsUtil, ou scripts que chamam o WMI.

Alguns comandos comuns do PowerShell são:

  • Get-DfsnRoot – Descubra todos os espaços de nomes DFS no domínio atual – Comumente usado para verificar os espaços de nomes disponíveis no domínio atual
  • New-DfsnFolder – Crie um novo nome de pasta DFS
    – Comumente usado para criar uma nova pasta DFS em um espaço de nomes
  • New-DfsnFolderTarget – Atribua caminho(s) a um nome de pasta DFS
    – Comumente usado para atribuir um ou mais caminhos de pasta de rede a uma pasta DFS
  • Remove-DfsnFolderTarget – Remove um caminho de uma pasta DFS, mas não remove a pasta DFS.
    – Comumente usado para remover um ou mais caminhos de pasta de rede de uma pasta DFS
  • Remove-DfsnFolder – Remove uma pasta e todos os seus caminhos
    – Comumente usado para remover uma pasta DFS de um espaço de nomes

Encontrando espaços de nomes DFS

Começaremos obtendo uma ideia de todos os espaços de nomes online e disponíveis nos espaços de nomes DFS no domínio atual usando o cmdlet Get-DfsnRoot.

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

Isso mostra que existem dois espaços de nomes DFS online neste domínio.

Finding DFS roots

Encontrando pastas DFS

Usando o comando Get-DfsnFolder, podemos listar as pastas DFS em cada espaço de nomes.

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

A partir dessa saída, podemos ver que no espaço de nomes AppRoot não há uma pasta DFS chamada PowerShell.

Finding DFS folders

Neste exemplo, temos uma pasta replicada chamada PowerShell em nossos três servidores de arquivos: FileServer01, FileServer02 e Datacenter.

O objetivo é compartilhar esta pasta replicada com nossos administradores usando um único caminho.

Para fazer isso, vamos criar uma nova pasta de link DFS no AppRoot namespace chamada PowerShell usando New-DfsnFolder e apontá-la para o compartilhamento de arquivos do servidor do datacenter. Vamos definir o estado da pasta DFS como Online e definir o estado do TargetPath como 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

# Verificar se a pasta já existe:
Get-DfsnFolderTarget -Path "\\$Domain\AppRoot\PowerShell"

# Verificar se o novo link DFS funciona usando o Windows Explorer
Invoke-Expression "explorer '\\$Domain\AppRoot\PowerShell\'"

No GUI do Gerenciamento DFS, podemos ver que a pasta DFS PowerShell não existe.

Inspecting DFS folders in the GUI
The folder target UNC path

Vamos agora executar o Windows Explorer a partir do console PowerShell e confirmar que ela não existe.

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

Se a pasta não existir, será escrito o resultado Caminho não encontrado. Pode prosseguir em texto verde na janela do terminal, como pode ser visto abaixo.

A partir do resultado, vemos que a pasta foi criada, a Referral Priority Class foi definida como Global-High e o State está como Online.

Inspecting DFS referral priority class and state

O GUI também confirma o que o PowerShell nos disse.

Inspecting DFS referral priority class and state

e nosso caminho está agora disponível no Windows Explorer.

DFS path available in Windows Explorer

Criando Alvos de Pasta DFS

Agora que criamos com sucesso a pasta DFS na namespace Powershell, adicione um caminho de destino de pasta adicional a ela e defina esse caminho como Online usando New-DfsnFolderTarget. Scripts PowerShell DFS permitem que você adicione qualquer número de componentes.

$Domain = 'tech.io'

## Splat as configurações para facilitar a legibilidade
$NewTPS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer01\FileShare\PowerShell'
    State = 'Online'
}

## Adicione uma nova pasta localizada no servidor 'FileServer01' & defina como Online
New-DfsnFolderTarget @NewTPS

Até este ponto, temos dois de nossos três caminhos de servidor adicionados e online. Para nosso último caminho da pasta, queremos adicionar o caminho mas não torná-lo disponível para os usuários. Então, vamos adicionar um caminho de destino de pasta para nossa pasta DFS PowerShell na e desta vez definir o estado do caminho da pasta DFS como offline novamente usando New-DfsnFolderTarget.

$Domain = 'tech.io'
## Splat as configurações para facilitar a legibilidade
$NewTPS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
    State = 'Offline'
}

## Adicione uma nova pasta localizada no servidor 'FileServer02' & defina como Offline
New-DfsnFolderTarget @NewTPS
## Verifique se a pasta agora existe:
Creating a new DFS folder target

Você pode ver que o caminho de Datacenter e FileServer01 está atualmente Online e o estado de FileServer02 foi definido como Offline.

DFS path status

Definindo Destinos de Pastas DFS como Offline ou Online

Também podemos alterar quais servidores são os hosts Online e Offline, e até mesmo qual será nosso servidor principal do caminho do arquivo usando Set-DfsnFolderTarget.

$Domain = 'tech.io'

## Splatting das configurações onde o caminho aponta para o servidor chamado FileServer01
$ChangeTPsFS1 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer01\FileShare\PowerShell'
    State = 'Offline'
}

## Definir a pasta localizada no caminho do servidor 'FileServer01' como Offline
Set-DfsnFolderTarget @ChangeTPsFS1

## Splatting das configurações onde o caminho aponta para o servidor chamado FileServer02
$ChangeTPsFS2 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
    State = 'Online'
    ReferralPriorityClass = 'globalhigh'
}

## Definir a pasta localizada no servidor 'FileServer02' como Online
Set-DfsnFolderTarget @ChangeTPsFS2

## Splatting das configurações onde o caminho aponta para o servidor chamado Datacenter
$ChangeTPsFS3 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\datacenter\FileShare\PowerShell'
    ReferralPriorityClass = 'sitecostnormal'
}

## Alterar a prioridade do caminho da pasta do servidor 'Datacenter' para 'Normal'
Set-DfsnFolderTarget @ChangeTPsFS3

Como você pode ver abaixo:

  • O caminho do FileServer01 foi alterado para Offline
  • O servidor Datacenter mudou a classe de prioridade de ReferralPriorityClass para sitecost-normal de global-high
  • O estado do caminho do FileServer02 foi alterado para Online
  • A classe de prioridade de ReferralPriorityClass do FileServer02 mudou para global-high
New status of DFS

Removendo caminhos de destino da pasta DFS com 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.

# Verificar o caminho de destino para o servidor 'FileServer01' como Offline e remover o caminho de destino da pasta
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
}

Tchau, pasta FileServer01!

FileServer01 folder is removed

Para aqueles que preferem renunciar à opção de rede de segurança, podemos acomodá-los, almas corajosas, também.

$Domain = 'tech.io'

## Espalhando as configurações onde o caminho apontava para o servidor chamado 'FileServer02'
$DelFTS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
}

## Excluir o alvo da pasta DFS
Remove-DfsnFolderTarget @DelFTS -Force:$true

Demos adeus à pasta FileServer02.

FileServer02 fodder is removed

Removendo Pastas DFS

Foi uma jornada longa e sinuosa, mas chegou a hora de nosso link DFS chegar ao fim. Podemos remover a pasta PowerShell e o link DFS usando o cmdlet Remove-DfsnFolder.

$Domain = 'tech.io'

## Excluir a Pasta 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

Resumo

É isso aí! Você percorreu um longo caminho de DFS e kung fu do PowerShell. Espero que agora você tenha adquirido alguns trechos de código para ajudá-lo a criar scripts DFS do PowerShell melhores!

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