البرمجة

فحص حالة المرآة في PowerShell

عندما تتعامل مع حالة المرآة أو الرئيسية في بيئة PowerShell، يتعين عليك استخدام بعض التقنيات والأساليب المناسبة لضمان الحصول على المعلومات بشكل دقيق وفعّال. في سياق الشيفرة التي قدمتها، يبدو أنك تحاول فحص حالة المرآة لقواعد البيانات على الخوادم المحددة. لتحقيق ذلك بطريقة تفاعلية وفعّالة، يمكنك استخدام الكود التالي:

powershell
# تحميل امتداد SMO [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null; # الخوادم التي تحتاج للفحص $sqlservers = get-content 'servers.txt' foreach($server in $sqlservers) { $srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" $server; # الحصول على قواعد البيانات المرآة $databases = $srv.Databases | Where-Object {$_.IsMirroringEnabled -eq $true}; Write-Host "==========================="; Write-Host "حالة قواعد البيانات على الخادم: $server"; Write-Host "==========================="; # فحص حالة كل قاعدة بيانات foreach ($database in $databases) { $databaseName = $database.Name; $mirroringStatus = $database.MirroringStatus; # استخدام switch للتعامل مع حالات المرآة المختلفة switch ($mirroringStatus) { 1 { Write-Host "$databaseName: Disconnected" } 2 { Write-Host "$databaseName: Suspended" } 3 { Write-Host "$databaseName: Synchronizing" } 4 { Write-Host "$databaseName: Not Synchronized" } default { Write-Host "$databaseName: Unknown status" } } } }

هذا الكود يعمل على تحميل امتداد SMO الخاص بـ SQL Server ومن ثم فحص حالة المرآة لقواعد البيانات على الخوادم المحددة. يتم عرض نتائج الفحص بشكل منظم وواضح باستخدام switch للتحقق من حالة المرآة وعرض النتيجة بشكل مقروء.

المزيد من المعلومات

بالطبع، دعني أوسع المقال ليشمل شرحًا مفصلًا لكيفية التعامل مع حالة المرآة والرئيسية في PowerShell وكيفية استخدام الشيفرة بشكل أكثر فعالية:


كيفية التعامل مع حالة المرآة والرئيسية في PowerShell

عند العمل مع قواعد البيانات في بيئة Microsoft SQL Server، قد تحتاج إلى فحص حالة المرآة (Mirroring) أو الرئيسية (Principal) لضمان سلامة بياناتك واستمرارية الخدمة. باستخدام PowerShell، يمكنك القيام بذلك بسهولة باستخدام مكتبة SMO (SQL Server Management Objects).

الخطوة 1: تحميل مكتبة SMO

أول خطوة تقوم بها هي تحميل مكتبة SMO. يمكنك القيام بذلك باستخدام الكود التالي:

powershell
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null;

الخطوة 2: تحديد الخوادم وقواعد البيانات

ثم يمكنك تحديد الخوادم التي تحتاج إلى فحص حالة المرآة أو الرئيسية عليها. يمكنك استخدام قائمة من الخوادم في ملف نصي مثل servers.txt، ثم استخدام get-content لقراءة هذا الملف.

powershell
$sqlservers = get-content 'servers.txt'

الخطوة 3: الفحص وعرض حالة المرآة

الآن، يمكنك استخدام حلقة foreach للتحقق من حالة المرآة لكل قاعدة بيانات على كل خادم. يمكن القيام بذلك باستخدام الشيفرة التالية:

powershell
foreach($server in $sqlservers) { $srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" $server; # الحصول على قواعد البيانات المرآة $databases = $srv.Databases | Where-Object {$_.IsMirroringEnabled -eq $true}; Write-Host "==========================="; Write-Host "حالة قواعد البيانات على الخادم: $server"; Write-Host "==========================="; # فحص حالة كل قاعدة بيانات foreach ($database in $databases) { $databaseName = $database.Name; $mirroringStatus = $database.MirroringStatus; # استخدام switch للتعامل مع حالات المرآة المختلفة switch ($mirroringStatus) { 1 { Write-Host "$databaseName: Disconnected" } 2 { Write-Host "$databaseName: Suspended" } 3 { Write-Host "$databaseName: Synchronizing" } 4 { Write-Host "$databaseName: Not Synchronized" } default { Write-Host "$databaseName: Unknown status" } } } }

الخطوة 4: التعامل مع حالة الرئيسية

إذا كنت بحاجة إلى التحقق من حالة الرئيسية بدلاً من المرآة، يمكنك استبدال $_.IsMirroringEnabled -eq $true بشرط يتحقق من حالة الرئيسية بالشكل الصحيح.

الختام

باستخدام الشيفرة السابقة، يمكنك بسهولة فحص حالة المرآة أو الرئيسية لقواعد البيانات على الخوادم المختلفة باستخدام PowerShell. تأكد دائمًا من فحص الأمان والصلاحيات المطلوبة لتشغيل هذه الأوامر.

زر الذهاب إلى الأعلى