
يعمل PowerShell Desired State Configuration (DSC) على تسهيل نشر وتكوين نظام التشغيل وأدوار الخادم والتطبيقات عندما يكون لديك مئات الخوادم.
ولكن عند استخدام DSC المحلي ، على سبيل المثال ليس في مرض التصلب العصبي المتعدد أزور ، وهناك بضع الفروق الدقيقة. تكون ملموسة بشكل خاص إذا كانت المؤسسة كبيرة (من 300 محطة عمل وخوادم) ولم تفتح بعد عالم الحاويات:
- لا توجد تقارير كاملة عن حالة النظم. إذا لم يتم تطبيق التكوين الضروري على بعض الخوادم ، فبدون هذه التقارير لن نعرف عنها. من الصعب للغاية الحصول على معلومات من خادم التقارير المدمج ، وبالنسبة لعدد كبير من المضيفين ، فهي أيضًا فترة طويلة.
- لا يوجد قابلية للتسامح مع الخطأ. من المستحيل إنشاء مجموعة من خوادم الويب DSC للاستقصاء والتي من شأنها أن تحتوي على قاعدة بيانات واحدة تتسامح مع الأخطاء ومستودع شائع لملفات تهيئة الوحدات النمطية ومفاتيح التسجيل.
سوف أخبرك اليوم عن كيفية حل المشكلة الأولى والحصول على البيانات للإبلاغ عنها. سيكون كل شيء أبسط إذا كان يمكن استخدام SQL كقاعدة بيانات.
يعد MS بالدعم المضمن فقط في نظام التشغيل Windows Server 2019 أو في خادم نظام التشغيل Windows 1803.
سيفشل أيضًا
في استرداد البيانات باستخدام موفر OleDB ، نظرًا لأن خادم DSC يستخدم معلمة مسماة غير مدعومة بالكامل من قبل OleDbCommand.
لقد وجدت هذه الطريقة: بالنسبة لأولئك الذين يستخدمون Windows Server 2012 و 2016 ، يمكنك
تكوين استخدام قاعدة بيانات SQL كخلفية لخادم DSC للاستطلاع. للقيام بذلك ، قم بإنشاء "وكيل" في شكل ملف .mdb مع الجداول المرتبطة ، والتي ستعيد توجيه البيانات الواردة من تقارير العميل إلى قاعدة بيانات خادم SQL.
ملاحظة: بالنسبة لنظام التشغيل Windows Server 2016 ، يجب عليك استخدام AccessDatabaseEngine2016x86 ، لأن Microsoft.Jet.OLEDB.4.0 لم يعد مدعومًا.لن أتطرق إلى عملية نشر خادم DSC للاستطلاع ، فقد تم وصفه جيدًا
هنا . ألاحظ فقط بضع نقاط. إذا قمنا بنشر الاستطلاع DSC على خادم الويب نفسه باستخدام WSUS أو Kaspersky Security Center ، فمن الضروري في البرنامج النصي لإنشاء التكوين تغيير المعلمات التالية:
UseSecurityBestPractices = $false
وإلا ، سيتم تعطيل TLS 1.0 ، فلن تتمكن من الاتصال بقاعدة بيانات SQL. لن يعمل Kaspersky Security Center أيضًا (يجب حل المشكلة في Kaspersky Security Center v11). Enable32BitAppOnWin64 = $true
إذا لم تقم بإجراء هذا التغيير ، فلن تتمكن من بدء تشغيل خادم AppPool DSC على IIS مع WSUS.- عند تثبيت خادم DSC مع WSUS ، قم بتعطيل التخزين المؤقت الثابت والديناميكي لموقع DSC.
دعنا ننتقل إلى إعداد خادم DSC لاستخدام قاعدة بيانات SQL.
إنشاء قاعدة بيانات SQL
- إنشاء قاعدة بيانات SQL فارغة المسمى DSC.


- قم بإنشاء حساب للاتصال بقاعدة البيانات هذه. تحقق مسبقًا من تمكين مصادقة حسابات Windows و SQL على خادم SQL.


- انتقل إلى قسم "تعيين المستخدم". حدد قاعدة بيانات ، في هذه الحالة ، DSC. نعطي حقوق صاحب قاعدة البيانات.

- القيام به.

إنشاء مخطط لقاعدة بيانات DSC
هناك طريقتان لإنشاء مخطط لقاعدة بيانات DSC:
- بشكل مستقل ، من خلال برنامج نصي في TSQL
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Devices]( [TargetName] [nvarchar](255) NOT NULL, [ConfigurationID] [nvarchar](255) NOT NULL, [ServerCheckSum] [nvarchar](255) NOT NULL, [TargetCheckSum] [nvarchar](255) NOT NULL, [NodeCompliant] [bit] NOT NULL, [LastComplianceTime] [datetime] NULL, [LastHeartbeatTime] [datetime] NULL, [Dirty] [bit] NOT NULL, [StatusCode] [int] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[RegistrationData]( [AgentId] [nvarchar](255) NOT NULL, [LCMVersion] [nvarchar](255) NULL, [NodeName] [nvarchar](255) NULL, [IPAddress] [nvarchar](255) NULL, [ConfigurationNames] [nvarchar](max) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[StatusReport]( [JobId] [nvarchar](50) NOT NULL, [Id] [nvarchar](50) NOT NULL, [OperationType] [nvarchar](255) NULL, [RefreshMode] [nvarchar](255) NULL, [Status] [nvarchar](255) NULL, [LCMVersion] [nvarchar](50) NULL, [ReportFormatVersion] [nvarchar](255) NULL, [ConfigurationVersion] [nvarchar](255) NULL, [NodeName] [nvarchar](255) NULL, [IPAddress] [nvarchar](255) NULL, [StartTime] [datetime] NULL, [EndTime] [datetime] NULL, [Errors] [nvarchar](max) NULL, [StatusData] [nvarchar](max) NULL, [RebootRequested] [nvarchar](255) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
- استيراد البيانات من devices.mdb الفارغة كجزء من وحدة PS PSesesStateConfiguration من خلال معالج استيراد بيانات SQL.
يقع Devices.mdb ، الذي سنعمل معه ، في C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ Modules \ PSDesiredStateConfiguration \ PullServer.
- لاستيراد البيانات ، قم بتشغيل SQL Server Import and Export Wizard.

- نختار المكان الذي سنقوم بجمع البيانات منه - في حالتنا ، هي قاعدة بيانات Microsoft Access. انقر فوق التالي.

- حدد الملف الذي نستورد منه المخطط.

- نشير إلى مكان الاستيراد - لدينا قاعدة بيانات SQL هذه.

- نختار خادم SQL (اسم الخادم) وقاعدة البيانات التي سنقوم باستيراد البيانات إليها (DataBase).

- نختار الخيار نسخ البيانات من جدول أو طرق عرض أو أكثر (نسخ البيانات من الجداول أو طرق العرض).

- نختار الجداول التي سنستورد منها مخطط قاعدة البيانات.

- تحقق تشغيل فوراً وانقر فوق "إنهاء".

- القيام به.

- نتيجة لذلك ، يجب أن تظهر الجداول في قاعدة بيانات DSC.

تكوين ملف "وكيل" .mdb
إنشاء اتصال ODBC بخادم SQL. من المفترض أن MS Access غير مثبت على الخادم مع DSC ، لذلك يتم إجراء تكوين database.mdb على مضيف وسيط مع تثبيت MS Access.
لنقم بإنشاء اتصال ODBC للنظام بخادم SQL (يجب أن يتطابق عمق البت في الاتصال مع عمق البت الخاص بـ MS Access - 64 أو 32). يمكن إنشاؤه باستخدام:
- بوويرشيل cmdlet:
Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '<64-bit or 32-bit>' –DsnType System –SetPropertyValue @('Description=DSC Pull Server',"Server=<Name of your SQL Server>",'Trusted_Connection=yes','Database=DSC') –PassThru
- أو يدويًا ، باستخدام معالج الاتصال:
- افتح الأدوات الإدارية. نختار مصادر بيانات ODBC وفقًا لإصدار MS Access المثبت. انتقل إلى علامة تبويب System DSN وقم بإنشاء اتصال نظام (إضافة).

- نشير إلى أننا سوف نتصل بخادم SQL. انقر فوق "إنهاء".

- حدد الاسم والخادم للاتصال. بعد ذلك ، يجب إنشاء اتصال بنفس المعلمات على خادم DSC.

- نشير إلى أنه للاتصال بخادم SQL ، نستخدم تسجيل الدخول الذي تم إنشاؤه مسبقًا باسم DSC.

- حدد قاعدة البيانات في إعدادات اتصال DSC.

- انقر فوق "إنهاء".

- قبل إكمال الإعدادات ، نتحقق من أن الاتصال يعمل (اختبار مصدر البيانات).

- القيام به.

إنشاء قاعدة بيانات devices.mdb في MS Access. نبدأ MS Access وإنشاء قاعدة بيانات فارغة تسمى devices.mdb.

- انتقل إلى علامة التبويب بيانات خارجية ، انقر فوق قاعدة بيانات ODBC. في النافذة التي تظهر ، حدد إنشاء جدول مرتبط للاتصال بمصدر البيانات.

- في الإطار الجديد ، حدد علامة التبويب مصدر بيانات الجهاز وانقر فوق موافق. في النافذة الجديدة ، أدخل بيانات الاعتماد للاتصال بخادم SQL.

- نختار الجداول التي تحتاج إلى ربط. نقوم بوضع علامة في خانة الاختيار "حفظ كلمة المرور" وانقر فوق "موافق". يجب حفظ كلمة المرور في كل مرة لجميع الجداول الثلاثة.

- في المؤشرات تحتاج إلى تحديد ما يلي:
- اسم الهدف لجدول dbo_Devices ؛

- NodeName أو IPAddress for dbo_RegistrationData ؛

- NodeName أو IPAddress لـ dbo_StatusReport.

- إعادة تسمية الجداول في MS Access ، وهي: إزالة البادئة dbo_ بحيث يمكن DSC استخدامها.

- القيام به.

- احفظ الملف وأغلق MS Access. الآن قم بنسخ devices.mdb الناتج إلى خادم DSC (بشكل افتراضي في C: \ Program Files \ WindowsPowershell \ DSCService) واستبدله بالخادم الحالي (إن وجد).
تكوين خادم DSC لاستخدام SQL
- نعود إلى خادم DSC. للاتصال بخادم SQL باستخدام ملف البروكسي الخاص بنا ، قم بإنشاء اتصال ODBC جديد على خادم DSC. يجب أن يكون الاسم وعمق البت وإعدادات الاتصال هو نفسه عند إنشاء ملف MDB. يمكنك نسخ الأجهزة الفارغة المكونة بالفعل ..mdb من هنا.
- لاستخدام devices.mdb ، تحتاج إلى إجراء تغييرات على web.config لخادم DSC للاستقصاء (بشكل افتراضي ، C: \ inetpub \ PSDSCPullServer \ web.config):
- لنظام التشغيل Windows Server 2012
<add key="dbprovider" value="System.Data.OleDb"> <add key="dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\WindowsPowerShell\DscService\Devices.mdb;">
- لنظام التشغيل Windows Server 2016
<add key="dbprovider" value="System.Data.OleDb"> <add key="dbconnectionstr" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\WindowsPowerShell\DscService\Devices.mdb;">
هذا يكمل إعداد خادم DSC.
التحقق من صحة خادم DSC
- تحقق من أن خادم DSC يمكن الوصول إليه من خلال متصفح الويب.

- الآن دعونا نتحقق مما إذا كان خادم DSC للاستقصاء يعمل بشكل صحيح. لهذا الغرض ، تحتوي الوحدة النمطية xPSDesiredStateConfiguration على برنامج نصي pullserversetuptests.ps1. قبل تشغيل هذا البرنامج النصي ، يجب عليك تثبيت وحدة Powershell المسماة Pester. تثبيته تثبيت - وحدة - اسم المرسى.
- افتح C: \ Program Files \ WindowsPowerShell \ Modules \ xPSDesiredStateConfiguration \ <version module> \ DSCPullServerSetup \ PullServerDeploymentVerificationTest (في المثال ، الإصدار 8.0.0.0.0).

- افتح PullServerSetupTests.ps1 وتحقق من المسار إلى web.config لخادم DSC. قام Red بتمييز المسار إلى web.config ، والذي سيتحقق من البرنامج النصي. إذا لزم الأمر ، قم بتغيير هذا المسار.

- تشغيل pullserversetuptests.ps1
Invoke-Pester. \ PullServerSetupTests.ps1
كل شيء يعمل.

- في SQL Management Studio ، نرى أن المضيفين المُدارين يرسلون تقارير إلى خادم تقارير DSC وأن البيانات تنتقل إلى قاعدة بيانات DSC على خادم SQL.

هذا كل شيء. أخطط في المقالات التالية لمعرفة كيفية إنشاء تقارير حول البيانات المستلمة ، ولمس أسئلة حول التسامح مع الخطأ وقابلية التوسع.