إنشاء تقارير لوحدة التنظيم النشطة في دليل الخادم باستخدام PowerShell

إنشاء تقارير وحدة التنظيم في الدليل النشط باستخدام PowerShell. وحدة التنظيم (OU) هي حاوية في الدليل النشط (AD) حيث يمكن تخزين المستخدمين، والمجموعات، والكمبيوترات، ووحدات التنظيم الأخرى. يمكن لكل نطاق AD أن يمتلك هرمية وحدته التنظيمية. ستغطي هذه المقالة إدارة OU وكيفية استخدام نصوص Windows PowerShell لنقل، وإنشاء، وحذف، وإنشاء تقارير OU في AD وربط وفرض سياسة المجموعة على OU.

إنشاء تقارير وحدة التنظيم في الدليل النشط باستخدام PowerShell

المتطلبات المسبقةإذا كنا نرغب في متابعة الأمثلة البرمجية في هذه المقالة، سنحتاج إلى تثبيت المكونات المطلوبة مسبقا:

إذا كنا نرغب في متابعة نصوص الأمثلة الواردة في هذه المقالة، فسنحتاج إلى تثبيت المكونات المطلوبة مسبقًا:

حسنًا، كيفية إنشاء تقارير مجلدات النظام الفعال المجال باستخدام باورشيل؟ دعونا نكتشف.

فهم أوامر الوحدة التنظيمية

A Microsoft Active Directory domain container that can hold users, groups, and computers is an organizational unit (OU). It is the smallest unit to which a Windows system administrator can assign a Group Policy setting or account permission. An organizational unit may contain multiple OUs, but each attribute within the containing OU must be distinct.

الكائنات من المجالات الأخرى لا يمكن أن توجد داخل الوحدات التنظيمية لـActive Directory. سيتم تغطية الأوامر الأساسية لإدارة الوحدات التنظيمية في الأقسام التالية.

إنشاء وحدات تنظيمية في Active Directory باستخدام PowerShell

يمكننا إنشاء وحدة تنظيمية جديدة في وحدة التحكم باستخدام New-ADOrganizationalUnit وتحديد اسم كائن OU الجديد. Windows PowerShell سينشئ بشكل افتراضي Organizational Unit في جذر المجال. على سبيل المثال، الأمر التالي سينشئ OU باسم IT على جهاز التحكم بالمجال (DC):

New-ADOrganizationalUnit “IT

إذا احتجنا إلى مسار LDAP لـ OU مختلف، استخدم -Path لتحديد اسمه المميز (DN):

New-ADOrganizationalUnit “IT” –Path “OU=Users,DC=InfraSOS,DC=com”

تحريك OU في Active Directory باستخدام PowerShell

إذا احتجنا إلى نقل OU إلى موقع آخر، استخدم الأمر Move-ADObject في cmdlet. من المهم التنويه بأنه لا ينبغي حماية الOU المستهدفة من الحذف العرضي. إذا كان الأمر كذلك، استخدم الأمر التالي لإزالة الحماية:

Set-ADOrganizationalUnit -Identity "OU=IT,OU=Users,DC=InfraSOS,DC=Com" -ProtectedFromAccidentalDeletion $False

يمكننا الآن نقل OU إلى موقع آخر:

Move-ADObject -Identity "OU=Regions,OU=Managers,DC=InfraSOS,DC=Com" -TargetPath "OU=IT,DC=InfraSOS,DC=Com"

إعادة تسمية OU في Active Directory باستخدام PowerShell

استخدم الأمر Rename-ADObject في cmdlet لإعادة تسمية وحدة التنظيم. يحدد معامل الهوية الكائن AD الذي يجب إعادة تسميته ويتطلب إما DN أو GUID. على سبيل المثال، يغير هذا الأمر اسم OU IT إلى Marketing:

Rename-ADObject -Identity "OU=Regions,OU=IT,DC=InfraSOS,DC=COM" -NewName Marketing

يمكننا أيضًا استخدام Get-ADOrganizationalUnit cmdlet مع -Filter المعامل، والذي لا يتطلب المسار الكامل LDAP إلى OU. ومع ذلك، سيبحث هذا الأمر في النظام الفرعي الكامل، وسيطبق سيناريو البرنامج النصي على جميع وحدات التنظيم التي تحتوي على مصطلح البحث في أسمائها:

Get-ADOrganizationalUnit -Filter "Name -eq 'Zones'" | Rename-ADObject -NewName Area

سنناقش المزيد من أوامر الحصول على OU بمجرد بدء إنشاء التقارير.

تطبيق سياسة المجموعة على OU في Active Directory باستخدام PowerShell

لتعيين سياسة جمعية إلى وحدة تنظيمية، يمكننا استخدام New-GPLink الأمر، الذي يربط كائن سياسة جمعية (GPO) محدد ووحدة التنظيمية. بالإضافة إلى ذلك، يمكننا تحديد أي من الخصائص التالية للرابط:

  • تمكين – إذا كان للرابط تمكين الحالة، يتم تطبيق إعدادات GPO المعالجة عندما يتم تنفيذ السياسة للموقع، المجال، و OU.
  • مفرط – إذا كان للرابط مفرط الحالة، لا يمكننا حظر OU في حاوية أدنى مستوى.
  • الترتيبالترتيب الحالة تحدد الأولوية لإعدادات GPO.

على سبيل المثال، يربط الأمر التالي GPO المحدد بـ Block بوحدة التنظيمية IT مع تمكين الربط وفرضه:

New-GPLink -Name "Block" -Target "OU=Districts,OU=IT, DC=InfraSOS, DC=com" -LinkEnabled Yes -Enforced Yes

نقل المستخدمين والكمبيوترات إلى OU جديدة في AD باستخدام PowerShell

بعد أن أنشأنا وحدة تنظيمية واختياريًا ربطها بـ GPO، سنملأها بالمستخدمين والكمبيوترات. ال Move-ADObject الأمر في PowerShell ينقل أي كائن أو مجموعة من كائنات الدليل النشط إلى OU مختلفة. الIdentity يشير المعلمة إلى أي كائن يجب أن يعيد التأريخ Active Directory كائن أو حاوية.

من المهم ملاحظة أنه يجب أن ندخل المسار الكامل LDAP للكائن أو SID؛ لا يمكننا استخدام SamAccountName الخاص به. يوضح المثال التالي كيفية تحريك مستخدم إلى OU IT:

Move-ADObject -Identity "CN=marion,CN=Users,DC=InfraSOS,DC=com" -TargetPath "OU=IT,OU=Users,DC=InfraSOS,DC=com"

استخدم البناء التركيبي الدقيق لتحريك الكمبيوتر الكائنات. على سبيل المثال، سينقل الأمر التالي الكمبيوتر DESKTOP-01 إلى حاوية الكمبيوترات:

Move-ADObject -Identity "CN=DESKTOP-01,OU=Computers,DC=InfraSOS,DC=com" -TargetPath "CN=Workstations,DC=InfraSOS,DC=com"

نقل الكمبيوترات والمستخدمين في AD إلى OU آخر

إذا كان لدينا قائمة معروفة مسبقًا للكائنات التي يجب نقلها، يمكننا حفظها كملف نصي ثم استيرادها إلى Active Directory. قم بإعداد قائمتك عن طريق إضافة كائن AD واحد في كل سطر. يجب أن يبدو الملف النصي الذي يحتوي على القائمة كشيء من هذا القبيل:

استخدم هذا البرنامج التعليمي PowerShell لنقل حسابات المستخدمين في AD المدرجة في ملف نصي:

$destOU =  "OU=Users,OU=IT,DC=InfraSOS,DC=com"
$usersList = Get-Content -Path "C:\temp\users.txt"

$usersList  | ForEach-Object {
     $userName  = (Get-ADUser -Identity $_.Name).distinguishedName
     Move-ADObject  -Identity $userName  -TargetPath $destOU
 }

لنقل حسابات الكمبيوتر في AD المدرجة في ملف نصي، استخدم البرنامج التعليمي PowerShell التالي:

$computers = Get-Content -Path "C:\Temp\Computers.txt"

$destOU =  "OU=Computers,OU=IT,DC=InfraSOS,DC=com"
ForEach( $computer in $computers){
    Get-ADComputer $computer |
    Move-ADObject -TargetPath $destOU
}

إزالة وحدة تنظيمية من Active Directory باستخدام PowerShell

الRemove-ADOrganizationalUnit تعمل كومند لإزالة وحدة تنظيمية. ولكن، يجب ألا نحمي الوحدة التنظيمية من الحذف العرضي. باستخدام الGet-ADOrganizationalUnit وSet-ADOrganizationalUnit يمكننا إزالة الخيار للحذف العرضي من كل وحدة تنظيمية يحتوي اسمها على كلمة مناطق:

Get-ADOrganizationalUnit -filter "Name -eq 'Zones'" | Set-ADOrganizationalUnit  -ProtectedFromAccidentalDeletion $False

استخدم الأمر التالي لإزالة كل وحدة تنظيمية تحتوي على مناطق في اسمها من AD:

Get-ADOrganizationalUnit -filter "Name -eq 'Zones'" | Remove-ADOrganizationalUnit –Recursive

سيطلب منا النظام تأكيد الحذف:

لاحظ أن ال-Recursive يزيل الوحدة التنظيمية وجميع كائناتها الفرعية. سيحذف AD الكائنات الفرعية حتى لو كانت حماية من الحذف مفعلة لها.

إدارة وحدات المنظمة في AD

بما أننا ناقشنا الآن الأوامر والمعلمات الأساسية المتعلقة بوحدات المنظمة ، سنناقش أكثر كيف يمكننا إنشاء تقارير OU التقارير باستخدام باورشيل.

الحصول على قائمة بجميع OUs باستخدام PowerShell

سنستخدم Get-ADOrganizationalUnit الأمر. أولاً ، قم بفرزها حسب CanonicalName. تعرض هذه الأمر هيكل OU أسهل في القراءة.

Get-ADOrganizationalUnit -Properties CanonicalName -Filter * |
Sort-Object CanonicalName |
Format-Table CanonicalName, DistinguishedName

الآتي هو مثال الناتج في باورشيل عندما نقوم بتشغيل الأمر:

الناتج مع جميع OUs في AD قائمة رائعة. لكن كيف نعرف ما إذا كانت OU تحتوي على أي مستخدمين؟

احصل على قائمة بجميع OUs، بما في ذلك عدد المستخدمين، باستخدام PowerShell

نحن نفضل استخدام PowerShell للحصول على قائمة بالوحدات التنظيمية، بما في ذلك عدد المستخدمين. هذا الأمر سيخبرنا إذا كانت هناك أي مستخدمين في OU.

Get-ADOrganizationalUnit -Properties CanonicalName -Filter * |
Sort-Object CanonicalName |
ForEach-Object {
    [pscustomobject]@{
        Name          = Split-Path $_.CanonicalName -Leaf
        CanonicalName = $_.CanonicalName
        UserCount     = @(Get-AdUser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel).Count
    }
}

سيعرض الناتج مع خاصية عمود UserCount. إذا كانت قيمة خاصية UserCount هي صفر، فإن OU لا يحتوي على مستخدمين. لن تظهر إذا كانت OU تحتوي على كائن جهاز حاسوب. سيتحقق هذا الأمر فقط ويعرض عدد المستخدمين.

تصدير OUs في AD إلى ملف CSV باستخدام PowerShell

نريد الآن تصدير قائمة الوحدات التنظيمية في AD التي رأيناها. لذا ستستخدم البرنامج النصي الذي سنقوم بتشغيله PowerShell للحصول على الوحدات التنظيمية وتصديرها إلى ملف نصي.

$results = Get-ADOrganizationalUnit -Properties CanonicalName -Filter * | Sort-Object CanonicalName |
ForEach-Object {
    [pscustomobject]@{
        Name          = Split-Path $_.CanonicalName -Leaf
        CanonicalName = $_.CanonicalName
        UserCount     = @(Get-AdUser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel).Count
    }
}
$results | Out-File C:\export_OUs.txt -Encoding UTF8

إذا أردنا تصديرها إلى ملف CSV، فغيّر السطر الأخير إلى الأمر التالي:

$results | Export-Csv -Path C:\export_OUs.csv -NoTypeInformation -Encoding UTF8

أثناء تشغيل الأمر أعلاه، ابحث عن الملف المصدر في الموقع المحدد الموقع.

شكرًا لك على قراءة “إنشاء تقارير الكتلة النشطة للمجموعات المشتركة باستخدام باورشيل”. سننتهي الآن.

خاتمة إنشاء تقارير الكتلة النشطة للمجموعات المشتركة باستخدام باورشيل

الآن بعد أن تعلمنا كيفية التحكم في الكتل النشطة في Active Directory باستخدام سِكربتات باورشيل، يمكننا تشغيل العديد من العمليات المتعلقة بإدارة الكتل النشطة إدارة وإنشاء تقارير وفقًا لذلك. يرجى التأكد من تمكين ميدان المهملات النشطة للمجموعات المشتركة قبل تجربة هذه الأوامر للتراجع عن أي حذف خاطئ بسهولة. من الذكي أيضًا تتبع جميع التغييرات في الوحدات التنظيمية الخاصة بك بعناية.

تحقق من محتوى باورشيل في مدونتنا هنا.

Source:
https://infrasos.com/create-active-directory-ou-reports-with-powershell/