Do obsługi obszarów nazw systemu plików DFS w systemie Windows Server 2008, 2008R2 jak i 20012 można posłużyć się polecenie DFSUtil . Polecenie jest przydatne, kiedy chcemy zautomatyzować zarządzanie DFS za pomocą skryptu. Poniżej przykładowe użycie utworzenia katalogu głównego o nazwie Public dla domeny domain12.pl na serwerze WS08R2 oraz dodanie folderu z obiektem docelowym:
Tworzymy folderu DFSRoots:
mkdir C:\DFSRoots
Następnie dodajemy podfolder, który będzie katalogiem głównym obszaru nazw
mkdir C:\DFSRoots\Public
Udostępniamy folder oraz nadajemy uprawnienia Odczytu dla Wszystkich
net share Public = C:\DFSRoots\Public
Poleceniem net share Public możemy sprawdzić nadane uprawnienia.
Po tak przygotowanej strukturze folderów możemy użyć DFSUtil w celu dodania nowego obszaru nazw.
dfsutil Root addDom \\WS08R2\Public „Ogólnie dostępny zasób firmowy „
Kolejnym poleceniem możemy dodawać foldery z obiektami docelowymi:
dfsutil link add \\domain12.pl\Public\Dokumenty \\192.168.10.131\Dokumenty
Wiedzę to wykorzystałem do automatyzacji wdrożenia DFS przy użyciu narzędzia dfsutil oraz Powershell. Skrypt tworzy folder w obszarze nazw dla każdego użytkownika, następnie dodaje foldery z obiektami docelowymi, co zaoszczędziło mi wiele czasu i pracy. Skrypt, co prawda stworzony dla własnych potrzeb, ale po drobnych modyfikacjach umieszczam poniżej, może ktoś się nim zainspiruje;)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Param ( [parameter(Mandatory=$true)][string] $Server, [parameter(Mandatory=$true)][string] $sharePath, [parameter(Mandatory=$true)][string] $domainName ) Set-Location C:\DFSRoots Add-PSSnapin Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue Import-Module ActiveDirectory -ErrorAction SilentlyContinue $users = Get-QADUser | Select LogonName, Name, Path foreach($user in $users) { mkdir $user.LogonName $netshare= "net share " + $user.LogonName+ "=C:\DFSRoots\"+$user.LogonName $netshare CMD /C $netshare $dfsRoot = "dfsutil root addDom \\"+$Server+"\"+ $user.LogonName + ' "'+$user.Name+'"' $dfsRoot CMD /C $dfsRoot $dfsLinkPersonal = "dfsutil link add \\"+ $domainName+"\"+$user.LogonName+"\Osobiste \\"+ $sharePath+"\"+$user.LogonName + ' "Pliki i dokumenty osobiste"' $dfsLinkPersonal CMD /C $dfsLinkPersonal $dfsLinkPublic = " dfsutil link add \\"+ $domainName+"\"+$user.LogonName+"\Publiczne \\"+ $sharePath+"\Public" + ' "Pliki i dokumenty publiczne"' $dfsLinkPublic CMD /C $dfsLinkPublic switch -wildcard ($user.Path) { "*OU=WP,*" {$dfsLinkDepart = "dfsutil link add \\"+ $domainName+"\"+$user.LogonName+"\Wydzialowe \\"+ $sharePath+"\WP" + ' "Pliki i dokumenty wydziałowe"' CMD /C $dfsLinkDepart} "*OU=IT,*" {$dfsLinkDepart = "dfsutil link add \\"+ $domainName+"\"+$user.LogonName+"\Wydzialowe \\"+ $sharePath+"\IT" + ' "Pliki i dokumenty wydziałowe"' CMD /C $dfsLinkDepart} } } |

Mateusz Nadobnik
Z pasją poświęcam czas na zdobywanie wiedzy w zakresie szeroko rozumianej Data Platform. Zachwycony językiem skryptowym Windows PowerShell. Swoją wiedzę, doświadczenia i spostrzeżenia opisuję na blogu.
read more