إنشاء تقارير أجهزة الكمبيوتر في Active Directory باستخدام PowerShell

إنشاء تقارير نشطة لجهاز الكمبيوتر Active Directory باستخدام PowerShell. للعثور على أي شيء يتعلق بكائنات جهاز الكمبيوتر في الدليل النشط (AD) وخصائصها، سنستخدم في المقام الأول الـcmdlet Get-ADComputer. على سبيل المثال، في مجال النطاق Active Directory، يمكننا استخدام الـcmdlet Get-ADComputer PowerShell للحصول على معلومات حول كائنات حساب الكمبيوتر (الخوادم ومحطات العمل). هذا الـcmdlet هو واحد من أكثر الأوامر فائدة للبحث عن كمبيوترات AD حسب معايير مختلفة.

تتناول هذه المقالة الاستخدامات العديدة للـcmdlet Get-ADComputer وكيفية تحويله إلى تقرير شامل وقيم.

لنبدأ مع مقالة البلوج “إنشاء تقارير جهاز الكمبيوتر في الدليل النشط باستخدام PowerShell”.

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

المتطلبات المسبقة

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

حسنًا، كيفية إنشاء تقارير الكمبيوتر في Active Directory باستخدام PowerShell؟ دعنا نتعرف على ذلك.

فهم أمر Get-ADComputer في PowerShell

قبل أن نبدأ، يجب علينا أن نعتاد على الأمر Get-ADComputer. لا نحتاج إلى امتيازات مسؤول النطاق للحصول على معلومات من الـ Active Directory. استخدام حساب مستخدم عادي عضو في مجموعة مستخدمي النطاق أو المستخدمين المصادق عليهم كافٍ.

حسنًا، الأمر Get-Help، كالمعتاد، يوفر قائمة بجميع المعلمات الأخرى للأمر Get-ADComputer:

$command = Get-ADComputer
Get-Help $command

مخرجات عينة:

بدلاً من ذلك، يمكننا الوصول إلى الوثائق الرسمية للأمر Get-ADComputer هنا.

بعد التمرير خلال القائمة الطويلة للمعلمات في سطر الأوامر والوثائق، يمكننا بدء البرمجة. تذكر، أهم معلمة ترافق الأمر Get-ADComputer هي معلمة Identity .

للحصول على معلومات حول حساب كمبيوتر محدد في النطاق، استخدم المعلمة -الهوية باسمها كوسيط:

Get-ADComputer -Identity DC01

إليك نموذج الإخراج:

DistinguishedName : CN=DC01,OU=Servers,OU=DC,OU=IT,DC=infrasos,DC=com
DNSHostName       : DC01.infrasos.com
Enabled           : True
Name              : DC01
ObjectClass       : computer
ObjectGUID        : 87654321-1204-5578-0000-123462341264
SamAccountName    : DC01
SID               : S-1-5-21-123656780-1234667890-0986654321-1264

كنتيجة لذلك، Get-ADComputerأمر ال cmdlet يرجع فقط الخصائص الأساسية لكائن الكمبيوتر من AD. ومع ذلك، يوفر تشغيل الأمر أعلاه فقط المعلومات على مستوى القمة حول كائن الكمبيوتر. ثم، إذا كنا نريد الغوص أعمق وعرض الخصائص المتاحة للكائن، يمكننا استخدام -الخصائصالمعلمة.

لتسريد جميع الخصائص للكائن، أضف المعلمة -الخصائصوأضف قيمة النجمة (*). قيمة النجمة هي قيمة الباحث عن النمط التي تشير إلى كل:

Get-ADComputer -Identity DC01 -Properties *

نموذج الإخراج:

من ناحية أخرى، يمكننا التنقل داخل وحدة تحكم مستخدمي Active Directory وأجهزة الكمبيوتر (أو dsa.msc) وعرض الخصائص من هناك. في النهاية، حدد كائن الكمبيوتر وانتقل إلى العلامة محرر السمات لعرض قائمة خصائص كائن الكمبيوتر.

تصفية نتائج Get-ADComputer

إحدى العيوب هي أنه قد نعرض مزيدًا من المعلومات حول الأمور التي لا نحتاجها بالضرورة. باستخدام خط الأنابيب PowerShell، يتيح لنا الأمر Get-ADComputer cmdlet عرض خصائص الكمبيوتر المحددة في سطر الأوامر. على سبيل المثال، يمكننا ترك قيم فقط لخصائص Name و LastLogonDate في الإخراج عن طريق توجيه الأمر إلى Format-Table: الأمر الرئيسي

Get-ADComputer -Identity DC01 -Properties * | Format-Table Name, LastLogonDate -Autosize

الإخراج العيني:

هنا، يقوم نظام تشغيل Windows PowerShell بحساب عرض الأعمدة بناءً على البيانات الفعلية المعروضة إذا حددنا AutoSize المعلمة عند تشغيل الأمر Format-Table. في النهاية، تجعل هذه المعلمة الأعمدة قابلة للقراءة.

ومع ذلك، لا يبحث الأمر السابق إلا عن كائن جهاز واحد في AD. لذلك، إذا أردنا المعلومات عن جميع الأجهزة في المجال، يمكننا استبدال معلمة الهوية بمعلمة الفلتر:

Get-ADComputer -Filter * -Properties * | Format-Table Name, Created -Autosize

انظر إلى النتيجة النموذجية:

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

في الأساس، للحصول على معلومات حول كائنات الكمبيوتر في وحدة التنظيمية (OU) معينة، يمكننا استخدام معلمة –القاعدة البحثية:

Get-ADComputer -SearchBase ‘OU=IT,DC=infrasos,DC=com’ -Filter * -Properties * | Format-Table Name, Created -Autosize

علاوة على ذلك، يمكننا أيضًا فرز نتائج الاستعلام عن طريق إدراج Sort-Object cmdlet في الخطوط الموجهة:

Get-ADComputer -Filter * -Properties * | Sort-Object Created | Format-Table Name, Created -Autosize

في الأمر السابق أعلاه، يفرز الأمر Sort-Object نتائج الأمر Get-ADComputer أولاً حسب Created ثم يمررها إلى Format-Table للعرض.

استخدام عوامل البحث مع Get-ADComputer

نستخدم Get-ADComputer cmdlet -Filter الحجة على البحث عن أجهزة AD متعددة بناءً على معايير معينة. كما ذكرنا، يمكننا استخدام النجوم وعوامل المقارنة المنطقية في هذه الحالة. بالتأكيد، كما هو الحال مع المرشحات، يمكننا فقط استخدام سمات الكائن الأساسية للكمبيوتر.

بنفس القدر, نستخدم الأنابيب Where-Object إذا احتجنا إلى استخدام مرشحات البحث على الملفات الشخصية الموسعة للكمبيوتر. الأمثلة العملية أكثر على كيفية الاستعلام والبحث عن الكمبيوترات في المجال باستخدام Get-ADComputer الأمر.

احصل على العدد الإجمالي لجميع الكمبيوترات النشطة وغير المحظورة في Active Directory:

نبحث عن الكمبيوترات باستخدام مرشحات متعددة في نفس الوقت. استخدم PowerShell مشغلي المقارنة المنطقية لتحقيق ذلك.

(Get-ADComputer -Filter {Enabled -eq "true"}).Count

عرض جميع مضيفي Windows Server في مجال Active Directory:

Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*' }

احصل على قائمة بجميع الكمبيوترات في مجال معين OU أسماءها تبدأ بـ DC:

Get-ADComputer -Filter {Name -like "DC*"} -SearchBase ‘OU=IT,DC=infrasos,DC=com’ -Properties * | Format-Table Name

عند البحث في OU، يمكننا استخدام –SearchScope1 المعامل للحد من البحث للمجموعة الجذرية فقط. يقوم -SearchScope2 الخيار بإجراء بحث متكرر للأجهزة في جميع OUs.

إدارة أجهزة متعددة باستخدام Get-ADComputer

يجب علينا استخدام Foreach-Object حلقة لإجراء إجراء معين على جميع الأجهزة في القائمة الناتجة. في هذا المثال، يمكننا استعلام عدة أجهزة AD عن بُعد باستخدام Windows Management Instrumentation أو Common Information Classes:

Get-ADComputer -Filter * -Property * |
Select-Object Name,OperatingSystem |
Foreach-Object {
    Get-CimInstance Win32_Bios -ComputerName $_.Name -ErrorAction SilentlyContinue |
    Select-Object PSComputerName
}

من الواضح أنه في هذا المثال، إذا أردنا قائمة بمضافات خوادم Windows Server في المجال، جنبًا إلى جنب مع نموذجها وشركة الصنع، فإننا نستخدم نفس طريقة التكرار ونجلب خصائص الكمبيوتر.

$Computers = Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*'}
Foreach ($Computer in $Computers){
    $Hostname = $Computer.Name
    $ComputerInfo = (Get-WmiObject -Computername $Hostname Win32_ComputerSystem)
    $Manufacturer = $Computer.Manufacturer
    $Model = $Computer.Model
    Write-Output "Name: $Hostname"
    Write-Output "Manufacturer: $Manufacturer"
    Write-Output "Model: $Model"
    Write-Output " "
}

إذاً، المعلومات المستلهبة من الأمثلة أعلاه متاحة على الفور عبر خدمات المجال بما أن هذه الكمبيوترات هي جزء من الحسابات الموحدة (AD). ومع ذلك، ليست كل الكمبيوترات تعلن خصائصها على المجال. كيف يمكننا استردادها؟

بعد ذلك، نستخدم Invoke-Command وبالتالي، فإن أمر PowerShell هذا ينفذ الأوامر المحلية على الكمبيوتر البعيد. على سبيل المثال، لنفترض أننا بحاجة إلى تشغيل أمر معين على جميع الكمبيوترات في مجموعة معينة من OU. في هذا المثال، دعونا نستخدم Invoke-Command لتشغيل أمر سياسة المجموعة تحديث على جميع الخوادم:

Get-ADComputer -SearchBase "OU=DC,DC=infrasos,DC=com" -Filter * |
%{ Invoke-Command -Computer $_.Name -ScriptBlock { gpupdate /force } }

إنشاء تقارير PowerShell AD باستخدام Get-ADComputer

في Windows PowerShell، نحن نستخرج نتائج أوامرنا إلى تنسيقات التقارير متعددة. إليك بعض الأمثلة أدناه.

أولاً، نحن نستخرج نتيجة الأمر Get-ADComputer إلى ملف نصي:

Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server 2019*' } -Properties * |
Select Name, OperatingSystem |
Format-Table -AutoSize C:\Temp\2019_servers.txt

ثانياً، نحصل أيضًا على قائمة بجميع أجهزة الكمبيوتر وتصديرها إلى قيمة مفصولة بفواصل(CSV) ملف:

Get-ADComputer -Filter * -Property * |
Select-Object Name,OperatingSystem |
Export-CSV All-Computers.csv -NoTypeInformation

ثالثاً، يمكننا أيضًا تصدير تقريرنا والحصول على تنسيق صفحة ويب HTML بقائمة جميع أجهزة الكمبيوتر والخصائص الأساسية:

Get-ADComputer -Filter * -Properties * |
Select-Object Name,OperatingSystem |
ConvertTo-Html |
Out-File C:\ps\ad_all_computers.html

يجب أن يبدو شيئًا مثل هذا:

شكرًا لك على قراءة إنشاء تقارير أجهزة الكمبيوتر في Active Directory باستخدام PowerShell. سنختم.

اقرأ أيضًا نشر مراقبة Azure AD

إنهاء تقارير أجهزة الكمبيوتر في Active Directory باستخدام Powershell

في هذا المقال، ناقشنا أمر Get-ADComputer بشكل شامل. تعلمنا أنه باستخدام هذا الأمر، يمكننا الحصول على قائمة تفصيلية من الخصائص والمعلومات لجهاز كمبيوتر معين. علاوة على ذلك، مع قائمة مكتملة، تعلمنا كيفية فلترة هذه الخصائص فقط لاسترداد المعلومات التي نحتاج إليها فقط.

إجمالاً، لقد تعلمنا أيضاً كيف نحول استعلام الأداة إلى أمر أكثر فائدة يمكننا استخدامه لتمرير الأوامر عن بُعد. وأخيرًا، يمكننا الآن إنشاء تقرير لدينا بتنسيقات متعددة باستخدام كل هذه المعلومات التي تم استيعابها.

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