إدارة DFS بكفاءة باستخدام نصوص PowerShell

استعد لتعلم كيفية كتابة سكربتات PowerShell لـ DFS بشكل أفضل باستخدام المعرفة التي تكتسبها في هذا البرنامج التعليمي. في هذا المنشور، سوف تتعلم كل شيء عن إدارة روابط DFS في PowerShell!

هذا المنشور للمدونة يحتوي على فيديو مرافق تم إنشاؤه بواسطة Scott Hurst، مساهم في تكنولوجيا تقنية المعلومات. لا تتردد في مشاهدته أو، إذا كنت تفضل النص، فاستمر في القراءة!

أحدث مقاطع الفيديو الخاصة بي

تقلل روابط نظام الملفات الموزع (DFS) من تعقيد العمل مع المشاركات الملفات عبر الشبكة. تتيح روابط DFS للمستخدمين والتطبيقات الوصول إلى مسار افتراضي للاتصال بالمجلدات المشتركة. يمكنك إنشاء روابط DFS باستخدام PowerShell.

سواء كنت تدير Active Directory أو منتج DFS آخر، فإن كتابة سكربتات PowerShell لـ DFS ستساعدك في التعامل مع أي مشاكل تواجهك.

يتيح هذا الـاسم الظاهري للمسؤولين عرض المجلدات المشتركة الموجودة على خوادم مختلفة، أو حتى تغيير موقع مجلد مشترك، بشكل شفاف تمامًا لمستهلكي تلك المجلدات.

لن يحتاج المستخدمون إلى تحديث الإشارات المرجعية، ولن يكون من الضروري تحديث التطبيقات بمسارات جديدة عند تغيير خوادم الملفات.

فوائد DFS

بالنسبة للمستخدمين، يتم تبسيط الوصول إلى مجلدات المشاركات عبر الشبكة إلى تنسيق مثل <اسم النطاق>\اسم المجلد، مما يقلل من التعقيد المرتبط بالمجلدات المخزنة على الخوادم البعيدة.

بالنسبة للتطبيقات، لا يلزم تغيير المسارات المُشَفَرة بشكل صلب إلى الموارد على الشبكة بسبب تغيير المسار الشبكي. يكفي تحديث رابط DFS وسيستمر التطبيق في الوصول إلى الموارد في موقعها الجديد.

المتطلبات الأولية لدور خادم DFS

  • Active Directory
  • تم تثبيت دور خدمات الملفات والتخزين على خادم Windows
  • Windows Server (قناة نصف سنوية)
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2012
  • Windows Server 2008 R2 Datacenter/Enterprise

المتطلبات الأولية

  • حساب مسؤول يتوفر فيه الصلاحيات اللازمة
  • أدوات RSAT مع تثبيت “أدوات خدمات الملفات – أدوات إدارة DFS”

الاستعداد لـ نصوص قوة الشبكة المحلية للإعداد

أولاً، قم بتنزيل وتثبيت RSAT. بعد ذلك، يتعين عليك تثبيت جميع الميزات اللازمة لنظام Windows. سيتم تثبيت واجهة المستخدم الرسومية لإدارة DFS ووحدة “مساحات أسماء DFS” لـ PowerShell لإنشاء روابط DFS باستخدام PowerShell وإدارتها، بالإضافة إلى أدوات السطر الأمر، ولكنها لن تقوم بتثبيت أي خدمات DFS على الخادم.

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

أوامر DFS المشتركة

يمكنك إدارة مساحات الأسماء باستخدام واجهة المستخدم الرسومية لإدارة DFS، وأدوات سطر الأوامر والأوامر “DFS Namespace (DFSN)” في PowerShell، وأوامر “DfsUtil”، أو النصوص التي تستدعي WMI.

بعض أمثلة الأوامر المشتركة في PowerShell هي:

  • Get-DfsnRoot – اكتشاف جميع أسماء فضاءات DFS في النطاق الحالي – يستخدم عادة للتحقق من وجود فضاءات في النطاق الحالي
  • New-DfsnFolder – إنشاء اسم مجلد DFS جديد
    – يستخدم عادة لإنشاء مجلد DFS جديد في فضاء الأسماء
  • New-DfsnFolderTarget – تعيين مسار (مسارات) إلى اسم مجلد DFS
    – يستخدم عادة لتعيين مسار أو أكثر لمجلد DFS على الشبكة
  • Remove-DfsnFolderTarget – إزالة مسار من مجلد DFS ولكن لا يزيل المجلد DFS نفسه.
    – يستخدم عادة لإزالة مسار أو أكثر من مجلد DFS على الشبكة
  • Remove-DfsnFolder – إزالة مجلد وجميع مساراته
    – يستخدم عادة لإزالة مجلد DFS من فضاء الأسماء

العثور على فضاءات أسماء DFS

سنبدأ بالحصول على فكرة عن جميع الفضاءات المتصلة بالإنترنت والمتاحة في النطاق الحالي باستخدام أمر Get-DfsnRoot.

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

تظهر هذه النتيجة أن هناك اثنين من الفضاءات المتصلة بالإنترنت في هذا النطاق.

Finding DFS roots

العثور على مجلدات DFS

باستخدام أمر Get-DfsnFolder يمكننا إدراج مجلدات DFS في كل فضاء.

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

من هذه النتائج، يمكننا رؤية أنه في فضاء التطبيقات هناك ليس مجلد DFS باسم PowerShell.

Finding DFS folders

في هذا المثال، لدينا مجلد مكرر يسمى PowerShell على ثلاثة خوادم ملفات لدينا؛ FileServer01، FileServer02 و Datacenter.

الهدف هو مشاركة هذا المجلد المكرر مع المسؤولين باستخدام مسار واحد.

للقيام بذلك، سنقوم بإنشاء مجلد DFS رابط جديد في مساحة الأسماء AppRoot باسم PowerShell باستخدام New-DfsnFolder ونشير إليه في مشاركة ملفات خادم مركز البيانات. سنقوم بتعيين حالة المجلد DFS إلى Online ونعيّن حالة TargetPath إلى 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

# تحقق من وجود المجلد الآن:
Get-DfsnFolderTarget -Path "\\$Domain\AppRoot\PowerShell"

# تحقق من أن مجلد رابط DFS الجديد يعمل باستخدام مستكشف Windows
Invoke-Expression "explorer '\\$Domain\AppRoot\PowerShell\'"

في واجهة المستخدم لإدارة DFS، يمكننا رؤية أن مجلد DFS PowerShell غير موجود.

Inspecting DFS folders in the GUI
The folder target UNC path

دعونا الآن نشغل مستكشف Windows من داخل وحدة التحكم PowerShell ونتأكد من عدم وجوده.

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

إذا كان المجلد غير موجود، فسيتم كتابة الناتج Path not found. Clear to proceed بخط أخضر في نافذة الطرفية كما يمكنك رؤيته أدناه.

من الناتج نرى أن المجلد تم إنشاؤه، وتم تعيين Referral Priority Class إلى Global-High والحالة هي Online.

Inspecting DFS referral priority class and state

ويؤكد واجهة المستخدم الرسومية ما قاله PowerShell لنا.

Inspecting DFS referral priority class and state

وأصبح مسارنا الآن متاحًا في مستكشف Windows.

DFS path available in Windows Explorer

إنشاء أهداف المجلد في DFS

الآن بعد أن قمنا بإنشاء مجلد Powershell DFS في النطاق الأسماء الرئيسية ، أضف مسار وجهة مستهدف إضافي له وقم بتعيين ذلك المسار كـ “متصل” باستخدام الأمر التالي New-DfsnFolderTarget . سكربتات PowerShell لـ DFS تتيح لك إضافة أي عدد من المكونات.

$Domain = 'tech.io'


## نظم الإعدادات ليسهل قراءتها

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


## أضف مجلدًا جديدًا موجودًا على الخادم 'FileServer01' وقم بتعيينه كـ "متصل"

New-DfsnFolderTarget @NewTPS

حتى هذه النقطة ، لدينا مسارين من ثلاثة مسارات للخوادم مضافة ومتصلة. بالنسبة لمسار المجلد الأخير ، نريد إضافة المسار ولكن دون توفيره للمستخدمين. لذا دعنا نضيف مسار وجهة مستهدفة لمجلدنا DFS وهذه المرة قم بتعيين حالة مسار DFS القديم إلى “غير متصل” وسنستخدم مرة أخرى الأمر التالي New-DfsnFolderTarget .

$Domain = 'tech.io'

## نظم الإعدادات ليسهل قراءتها

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


## أضف مجلدًا جديدًا موجودًا على الخادم 'FileServer02' وقم بتعيينه إلى "غير متصل"

New-DfsnFolderTarget @NewTPS

## تحقق من أن المجلد موجود الآن:
Creating a new DFS folder target

يمكنك رؤية أن مسار FileServer01 ومسار Datacenter حاليًا متصلان وتم تعيين حالة مسار FileServer02 إلى “غير متصل”.

DFS path status

ضبط مسارات مجلدات DFS على “غير متصل” أو “متصل”

يمكننا أيضًا تغيير الخوادم التي تعتبر مضيفًا متصلاً وغير متصلاً، وحتى الخادم الذي سيكون مضيف المسار الأساسي للملف باستخدام Set-DfsnFolderTarget.

$Domain = 'tech.io'

## استخدام الإعدادات الحزمة لتحديد المسار الذي يشير إلى الخادم بالاسم FileServer01
$ChangeTPsFS1 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer01\FileShare\PowerShell'
    State = 'Offline'
}

## تعيين المجلد الموجود على خادم المسار 'FileServer01' إلى حالة غير متصل
Set-DfsnFolderTarget @ChangeTPsFS1

## استخدام الإعدادات الحزمة لتحديد المسار الذي يشير إلى الخادم بالاسم FileServer02
$ChangeTPsFS2 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
    State = 'Online'
    ReferralPriorityClass = 'globalhigh'
}

## تعيين المجلد الموجود على خادم 'FileServer02' إلى حالة متصل
Set-DfsnFolderTarget @ChangeTPsFS2

## استخدام الإعدادات الحزمة لتحديد المسار الذي يشير إلى الخادم بالاسم Datacenter
$ChangeTPsFS3 = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\datacenter\FileShare\PowerShell'
    ReferralPriorityClass = 'sitecostnormal'
}

## تغيير أفضلية المجلد الخاص بالخادم 'Datacenter' إلى 'عادي'
Set-DfsnFolderTarget @ChangeTPsFS3

كما يمكنك رؤية الأمور أدناه:

  • تم تغيير المسار الخاص بـ FileServer01 إلى غير متصل
  • تم تغيير ReferralPriorityClass للخادم Datacenter إلى sitecost-normal بدلاً من global-high
  • تم تغيير حالة المسار الخاص بـ FileServer02 إلى متصل
  • تم تغيير ReferralPriorityClass لـ FileServer02 إلى global-high
New status of DFS

إزالة مسارات الهدف لمجلد DFS باستخدام 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.

# تحقق من حالة المسار الهدف للخادم 'FileServer01' وقم بإزالة مسار الهدف للمجلد
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
}

وداعًا مجلد FileServer01!

FileServer01 folder is removed

بالنسبة لأولئك الذين يفضلون التخلي عن خيار الشبكة الآمنة، يمكننا أن نتكيف معكم، أيها الأرواح الشجاعة.

$Domain = 'tech.io'

## تنقيط الإعدادات حيث يشير المسار إلى الخادم المسمى 'FileServer02'
$DelFTS = @{
    Path = "\$Domain\AppRoot\PowerShell"
    TargetPath = '\FileServer02\FileShare\PowerShell'
}

## حذف هدف المجلد DFS
Remove-DfsnFolderTarget @DelFTS -Force:$true

لقد ودعنا مجلد FileServer02.

FileServer02 fodder is removed

إزالة مجلدات DFS

كانت رحلة طويلة ومعقدة، لكن حان الوقت لانتهاء رابطنا DFS باستخدام الأمر Remove-DfsnFolder لإزالة المجلد والرابط DFS.

$Domain = 'tech.io'

## حذف المجلد 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

ملخص

هذا كل شيء! لقد قمت بتغطية طريق معقد من DFS و٫PowerShell. آمل أن تكون الآن قد اكتسبت بعض مقتطفات الشفرة لمساعدتك في بناء نصوص PowerShell DFS أفضل!

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