حل مشكلة ‘Trust Relationship Between Workstation and Primary Domain Failed’

مرة واحدة، كانت المشاكل الأكثر شيوعًا التي تؤرق مسؤولي نظام ويندوز هي سقوط أجهزة الكمبيوتر الموثوقة في Active Directory عن المجال. رسالة الخطأ المشهورة “فشلت العلاقة الموثوقة بين هذا الجهاز والمجال الأساسي” شائعة للغاية.

في هذا الدليل، ستتعلم كل الحيل التي اطلعت عليها خلال أكثر من 20 عامًا من إدارة Active Directory وكيفية توتيرها باستخدام PowerShell.

رسالة الخطأ “فشلت العلاقة الموثوقة بين هذا الجهاز والمجال الأساسي“.

عندما لا يثق المجال AD بكمبيوتر ما، فمن المحتمل أن السبب يعود إلى عدم تطابق كلمة المرور المخزنة في الكمبيوتر المحلي مع كلمة المرور المخزنة في Active Directory.

The Trust Relationship Between This Workstation and the Primary Domain Failed

يجب أن تكون الكلمتان في مزامنة ليثق المجال AD بالكمبيوتر. إذا لم تكن في مزامنة، فستتلقى رسالة الخطأ الشهيرة “فشلت العلاقة الموثوقة بين هذا الجهاز والمجال الأساسي“.

للأسف، لم يكن هناك حلاً واحدًا يعمل 100٪ من الوقت. ولهذا السبب كتبت هذا الدليل.

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

كلمات سر حسابات أجهزة الكمبيوتر في Active Directory.

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

عرض السياسات الحالية

يمكنك عرض سياسة المجال بأكملها عن طريق فتح واجهة إدارة سياسة المجموعة (GPMC). في داخل GPMC، انقر على سياسة المجال الافتراضية وانتقل إلى تكوين الكمبيوتر -> إعدادات ويندوز -> إعدادات الأمان > السياسات المحلية > خيارات الأمان.

عند الوصول إلى خيارات الأمان، ابحث عن السياسة المسماة عضو المجال: أقصى مدة لكلمة مرور حساب الحاسوب.

Computer Account Password Age Policy

على حاسوب متصل بـ AD، افتح regedit وانتقل إلى المفتاح HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters في سجل النظام وابحث عن قيمة MaximumPasswordAge كما هو موضح أدناه.

Local Computer Account Password Age Registry Value

بينما تكون هناك، يمكنك تعطيل إمكانية تغيير كلمة مرور الحاسوب المحلي تمامًا عن طريق ضبط قيمة DisablePasswordChange على 1.

عندما يتغير حساب الحاسوب، يجب أن يتغيروا كل من الحاسوب المحلي وحساب الحاسوب الخاص بـ AD كلمات المرور معًا. يعرف AD الكلمة المرور الحالية والسابقة في حالة أن تصبحا غير متزامنتين لفترة وجيزة.

عملية تغيير كلمة مرور حساب الحاسوب

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

باستخدام خدمة Netlogon في Windows ، يقوم الكمبيوتر المحلي بتشغيل تسلسل تغيير كلمة المرور. يقوم الكمبيوتر أولاً بتشغيل تغيير كلمة المرور على وحدة تحكم المجال. إذا كان هذا ناجحًا ، فإنه يحاول بعدها تغيير كلمة المرور المحلية لتتطابق مع المفتاح في سجل HKLM \ SECURITY \ Policy \ Secrets & lt؛ hostname & gt؛. ACC .

عادة ما يعمل هذا العملية بشكل جيد حتى إذا تم إيقاف تشغيل الكمبيوتر أو توقفه عن العمل لأكثر من 30 يومًا لأن الكمبيوتر المحلي يقوم بتشغيل تغيير كلمة المرور.

ومع ذلك ، يحدث مشكلة عندما:

  • يقوم الكمبيوتر بتغيير حساب الكمبيوتر في AD ولكنه غير قادر على تغيير كلمة المرور المحلية
  • يتم إعادة تصوير الكمبيوتر دون تشغيل Sysprep
  • يتم إعادة تثبيت نظام التشغيل ويحاول المصادقة باستخدام حساب الكمبيوتر القديم والممكن في AD
  • … وأكثر؟

إذا حدث أي من المشكلات المذكورة أعلاه ، فسترى رسالة خطأ “فشل العلاقة الموثوقة بين هذه محطة العمل والمجال الأساسي”.

التحقق من المشكلة

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

لنقم ببناء سكريبت يمكننا تشغيله محليًا وعن بُعد لتحديد الأجهزة في النطاق التي تعاني من مشكلة “علاقة الثقة بين هذا الجهاز والمجال الأساسي قد فشلت” وذلك للأبد.

أولاً وقبل كل شيء، نظرًا لأنك تفترض أن مصادقة المجال لا تعمل، ستحتاج إلى معرفة حساب مستخدم محلي في مجموعة المسؤولين. آمل أن تعرف كلمة مرور المسؤول المحلي الخاصة بك!

nltest (أداة سطر الأوامر)

nltest هي أداة سطر أوامر قديمة المدرسة تقوم بفحص علاقة الثقة لجهاز الكمبيوتر. يتم تثبيت هذه الأداة عند تثبيت RSAT أو تكون متاحة مباشرة على مراقب المجال.

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

> nltest /sc_verify:<your domain FQDN>

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

netdom (أداة سطر الأوامر)

netdom هو أداة أخرى تستخدم عبر سطر الأوامر يمكنك استخدامها للتحقق من علاقة الثقة. تم تثبيت هذه الأداة أيضًا عند تثبيت RSAT أو تتوفر مباشرة على مراقب المجال.

يمكنك التحقق من الثقة باستخدام netdom verify عن طريق توفير:

  • اسم اسم الكمبيوتر الذي ترغب في التحقق منه
  • اسم المجال الكامل للمجال
  • اسم المستخدم للمصادقة على الطلب
  • كلمة مرور حساب المستخدم

فيما يلي مثال:

> netdom verify MYCOMPUTER /Domain:domain.local /UserO:abertram /PasswordO:*

من خلال توفير القيمة * لمعلمة PasswordO، ستقوم netdom بطلب كلمة المرور.

Test-ComputerSecureChannel (PowerShell)

أحد أفضل الطرق لحل مشكلة “فشل العلاقة بين هذا الجهاز والمجال الرئيسي” هو استخدام أمر Test-ComputerSecureChannel. هذا الأمر في PowerShell متاح في نظام التشغيل Windows 10 وأسهل في الاستخدام.

يعمل أمر Test-ComputerSecureChannel محلياً على جهاز كمبيوتر يعمل بنظام Windows 10. عند تسجيل الدخول إلى الكمبيوتر تفاعلياً ، قم بفتح نافذة PowerShell وتشغيل Test-ComputerSecureChannel بدون أي معلمات. سيُرجع إما True أو False اعتمادًا على صحة الثقة.

PS51> Test-ComputerSecureChannel
True

يمكنك أيضًا تحديد مراقب المجال المعين للتحقق من تزامن كلمات المرور باستخدام معلمة Server.

PS51> Test-ComputerSecureChannel -Server 'DC.domain.local'
False

هذا الأمر سهل الاستخدام ولديه خيار Repair ولكن سنحتفظ بتوضيح ذلك لقسم الإصلاح.

إذا كنت تعرف كلمة مرور المسؤول المحلي لتلك الأجهزة التي ترغب في التحقق منها وتمكين التحكم عن بُعد في PowerShell عليها ، يمكنك أيضًا استخدام أمر Invoke-Command. باستخدام أمر Invoke-Command ، يمكنك تشغيل Test-ComputerSecureChannel عن بُعد على جهاز كمبيوتر واحد أو عدة أجهزة كل دفعة.

PS51> Invoke-Command -ComputerName PC1, PC2, PC3 -ScriptBlock { Test-ComputerSecureChannel }

فحص علاقات الثقة بالجملة

الآن بعد أن تعرفت على كيفية التحقق من علاقة الثقة عن بُعد ، إليك مقتطف كود يمكنك استخدامه لفحص جميع أجهزة الكمبيوتر في نطاق النشر الإعلاني! في هذا النص البرمجي ، أقوم بأول شيء بفحص التأكد من تواجد الكمبيوتر على الإنترنت. إذا لم يكن متصلاً ، فسيُرجع Offline. إذا كان متصلاً ، فسيقوم بتشغيل Test-ComputerSecureChannel على كل جهاز كمبيوتر وسيعيد إما True أو False.

Testing trust relationships in bulk
$localCredential = Get-Credential @(Get-AdComputer -Filter *).foreach({ $output = @{ ComputerName = $_.Name } if (-not (Test-Connection -ComputerName $_.Name -Quiet -Count 1)) { $output.Status = 'Offline' } else { $trustStatus = Invoke-Command -ComputerName $_.Name -ScriptBlock { Test-ComputerSecureChannel } -Credential $localCredential $output.Status = $trustStatus } [pscustomobject]$output })

معرفة وفهم المشكلة هو الخطوة الأولى ولكن كيف يمكنك إصلاحها؟ الآن تعرف أنه يجب أن تحصل على حساب الكمبيوتر المخزن على الكمبيوتر المحلي بنفس حساب الكمبيوتر المخزن في Active Directory.

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

  1. إعادة تعيين كلمة مرور حساب الكمبيوتر في AD
  2. إعادة تعيين كلمة مرور حساب الكمبيوتر المحلي
  3. فصل وإعادة انضمام جهاز الكمبيوتر بنظام التشغيل Windows
  4. إزالة حساب الكمبيوتر بالكامل وإعادة انضمام جهاز الكمبيوتر بنظام التشغيل Windows

هذا الكثير من الخيارات! في هذا الدليل، سنركز على إصلاح هذه المشكلة باستخدام PowerShell وأدوات السطر الأمر (للشمولية). إذا لم تكن تستخدم PowerShell بالفعل، يجب أن تبدأ في استخدامه!

إصلاح المشكلة: إعادة تعيين كلمات مرور الكمبيوتر

netdom (أداة سطر الأمر)

A trust can be repaired and the “the trust relationship between this workstation and the primary domain failed” error message can be eliminated by using the old-school netdom command-line tool. If you’re logged into the computer locally as an administrative user, you can run netdom resetpwd to initiate the password reset sequence as shown below.

في هذا المثال:

  • DC هو اسم مراقب المجال
  • abertram هو اسم حساب مستخدم Active Directory بحقوق لإعادة تعيين حساب الكمبيوتر
  • * هو عبارة عن بديل لكلمة مرور حساب المستخدم وسيتم طلب كلمة المرور.
> netdom resetpwd /s:DC /ud:abertram /pd:*

Reset-ComputerMachinePassword (PowerShell)

أحد أفضل الطرق لإصلاح علاقة الثقة هو باستخدام أمر Reset-ComputerMachinePassword. يتم تشغيل هذا الأمر على الكمبيوتر المحلي وسيبدأ سلسلة إعادة تعيين كلمة المرور. بناء جملته بسيطة للغاية.

PS51> Reset-ComputerMachinePassword

إذا كنت ترغب في تحديد مراقب مجال معين لإعادة التعيين، يمكنك تحديده باستخدام المعامل Server جنبًا إلى جنب مع اعتمادية اختيارية (سيكون الافتراضي هو المستخدم المحلي).

المثال أدناه سيطلب اسم مستخدم AD وكلمة مرور وسيحاول إعادة تعيين كلمة المرور على الكمبيوتر المحلي ومركز تحكم المجال

PS51> Reset-ComputerMachinePassword -Server DC -Credential (Get-Credential)

يمكن أيضًا تشغيل هذا عن بُعد باستخدام Invoke-Command إذا توفرت PowerShell Remoting على الكمبيوتر. أدناه ، أحصل على اسم المستخدم وكلمة المرور لحساب المسؤول المحلي على الكمبيوتر. أحصل أيضًا على بيانات اعتماد لديها الحق في إعادة تعيين كلمة مرور حساب AD لهذا الكمبيوتر. ثم أمرر $domainCredential إلى الجلسة البعيدة باستخدام تعليمة $using

$localAdminCredential = Get-Credential
$domainCredential = Get-Credential

PS51> Invoke-Command -Computername MYCOMPUTER -Credential $localAdminCredential -ScriptBlock { Reset-ComputerMachinePassword -Server DC -Credential $using:domainCredential }

يرجى ملاحظة أن هذا يعمل أيضًا حتى إذا تمت إزالة حساب الكمبيوتر من Active Directory. إنشاء حساب كمبيوتر بنفس الاسم وسيضمن Reset-ComputerMachinePassword مزامنة كلمة المرور.

إعادة تعيين كلمات مرور حسابات الكمبيوتر المحلية بالجملة

ترغب في التعامل مع خطأ “فشلت العلاقة الموثوقة بين هذا المحطة العمل والمجال الأساسي” على العديد من الأجهزة دفعة واحدة؟ لا مشكلة. باستخدام حلقة foreach المفيدة ، يمكننا تشغيل Reset-ComputerMachinePassword بالجملة أيضًا.

Resetting computer account passwords in bulk
$localAdminCredential = Get-Credential $domainCredential = Get-Credential @(Get-AdComputer -Filter *).foreach({ $output = @{ ComputerName = $_.Name } if (-not (Test-Connection -ComputerName $_.Name -Quiet -Count 1)) { $output.Status = 'Offline' } else { $pwChangeOutput = Invoke-Command -Computername $_.Name -Credential $localAdminCredential -ScriptBlock { Reset-ComputerMachinePassword -Server DC -Credential $using:domainCredential } $output.PasswordChangeOutput = $pwChangeOutput } [pscustomobject]$output })

Test-ComputerSecureChannel -Repair (PowerShell)

طريقة أخرى لبدء عملية تغيير كلمة المرور هي تشغيل Test-ComputerSecureChannel ولكن هذه المرة استخدم الخيار Repair. من ما أستطيع أن أقول، هذه العملية متطابقة تمامًا مع استخدام Reset-ComputerMachinePassword. على واجهة تحكم الكمبيوتر، استخدم معامل Repair ومعامل Credential.

PS51> Test-ComputerSecureChannel -Repair -Credential (Get-Credential)

تأكد دائمًا من استخدام معامل Credential هنا. إذا لم تفعل ذلك، على غرار أداة nltest، ستحاول استخدام الحساب المحلي ولن تعمل.

إصلاح العلاقات الاعتمادية بالجملة

ضع هذا الأمر في حلقة الـforeach المفيدة التي استخدمناها، وسيكون كل شيء على ما يرام!

Resetting computer account passwords in bulk
$localAdminCredential = Get-Credential $domainCredential = Get-Credential @(Get-AdComputer -Filter *).foreach({ $output = @{ ComputerName = $_.Name } if (-not (Test-Connection -ComputerName $_.Name -Quiet -Count 1)) { $output.Status = 'Offline' } else { $repairOutput = Invoke-Command -Computername $_.Name -Credential $localAdminCredential -ScriptBlock { Test-ComputerSecureChannel -Repair -Credential $using:domainCredential } $output.RepairOutput = $repairOutput } [pscustomobject]$output })

إصلاح المشكلة: إعادة الانضمام إلى المجال

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

يرجى ملاحظة أنني سمعت ببعض التقارير التي تفيد بأن الفصل غير ضروري. قد تكون قادرًا على القيام بعملية الانضمام الجديد فقط. قد تختلف النتائج حسب الحالة الخاصة بك.

فيما يلي ما يمكنك أن تفعله:

  • تسجيل الدخول إلى الكمبيوتر باستخدام حساب إداري محلي
  • الانتقال إلى خصائص النظام
  • النقر على تغيير
  • تعيينه على مجموعة عمل
  • إعادة التشغيل
  • تعيينه مرة أخرى في المجال

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

هناك طريقتان وجدتهما يمكنك استخدام برنامج PowerShell لفصل الكمبيوتر عن المجال واستخدام برنامج PowerShell للانضمام إلى المجال.

باستخدام CIM

يمكنك الانضمام إلى المجال باستخدام برنامج PowerShell (وفصله) باستخدام فئة CIM Win32_ComputerSystem. هذه الفئة تحتوي على طريقتين تسمح لك بفصل الكمبيوتر عن المجال والانضمام إليه وتسمى UnJoinDomainOrWorkgroup() و JoinDomainOrWorkGroup.

بما أن هذا هو CIM ، يمكنك تشغيل هذا عن بُعد بنفس سهولة التشغيل المحلي. نظرًا لأنني أفترض أنك تفضل تشغيل هذا عن بُعد من راحة مكتبك ، إليك مقتطف الشفرة البرمجية التالي الذي يفعل ذلك.

“العلاقة الموثوقة بين هذا الجهاز والمجال الأساسي قد فشلت” لن تعود خطأ!

$computername = 'PITA'

$instance = Get-CimInstance -ComputerName $computername -ClassName 'Win32_ComputerSystem'

$invCimParams = @{
    MethodName = 'UnjoinDomainOrWorkGroup'
    Arguments = @{ FUnjoinOptions=0;Username="Administrator";Password="mypassword" }
}
$instance | Invoke-CimMethod @invCimParams

يرجى ملاحظة معلمة FUnjoinOptions أعلاه. لقد اخترت تحديد القيمة 4 هنا. هذا يقوم بأداء السلوك الافتراضي عند فصل الكمبيوتر يدويًا. تعطيل حساب الكمبيوتر في Active Directory (إذا كان بإمكانه العثور على واحد). إذا كنت لا ترغب في وجود هذا السلوك ، يمكنك استخدام القيمة 0 هنا.

بمجرد فصل الكمبيوتر عن المجال ، يمكنك بعد ذلك الانضمام إلى المجال باستخدام طريقة JoinDomainOrWorkGroup().

$computername = 'PITA'

$instance = Get-CimInstance -ComputerName $computername -ClassName 'Win32_ComputerSystem'

$invCimParams = @{
    MethodName = 'JoinDomainOrWorkGroup'
    Arguments = @{ FJoinOptions=3;Name=mydomain.local;Username="mydomain\domainuser";Password="mypassword" }
}
$instance | Invoke-CimMethod @invCimParams

لاحظ المعلمة FJoinOptions أعلاه. لقد قمت باختيار تحديد القيمة 3 هنا. يؤدي هذا إلى سلوك افتراضي عند انضمام الكمبيوتر يدوياً. تخلق هذه الخيارات حساب كمبيوتر في نطاق النشر الإعلاني. يمكنك أن تجد بعض الخيارات الأخرى مثل إضافة الكمبيوتر إلى وحدة تنظيمية معينة عبر توثيق JoinDomainOrWorkgroup.

نصيحة: يمكنك أيضًا إلغاء انضمام وإعادة انضمام العديد من الكمبيوترات دفعة واحدة باستخدام هذه الطريقة عن طريق تحديد عدة كمبيوترات عبر معلمة ComputerName في Get-CimInstance.

استخدام أوامر Remove-Computer و Add-Computer

يمكنك أيضًا استخدام أوامر PowerShell المدمجة لإلغاء انضمام وانضمام الكمبيوتر إلى النطاق باستخدام PowerShell. يمكنك استخدام أوامر Remove-Computer و Add-Computer.

لإلغاء انضمام جهاز كمبيوتر باستخدام PowerShell ، قم بتسجيل الدخول إلى واجهة التحكم في الكمبيوتر واستخدم أمر Remove-Computer. قدم بيانات اعتماد النطاق مع صلاحيات لإلغاء انضمام الكمبيوتر. يمكنك أيضًا تحديد المعامل Restart لإعادة التشغيل بعد الغاء الانضمام و Force لعدم طلب تأكيد.

PS51> Remove-Computer -UnjoinDomaincredential (Get-Credential) -Restart -Force

بمجرد إعادة تشغيل الكمبيوتر، يمكنك استخدام أمر Add-Computer للانضمام بالكمبيوتر إلى النطاق باستخدام PowerShell. يمكنك استخدام أمر Add-Computer عن بُعد بتوفير المعامل ComputerName. ستستخدم أيضًا بيانات اعتماد المستخدم المحلية لإجراء الاتصال وبيانات اعتماد النطاق للمصادقة على النطاق.

عندما يعود الكمبيوتر للعمل، نأمل أنك لن تعاني بعد الآن من رسالة الخطأ “فشل العلاقة الموثوقة بين هذا الجهاز والنطاق الأساسي”.

$localCredential = Get-Credential
$domainCredential = Get-Credential

Add-Computer -ComputerName PITA -LocalCredential $localCredential -DomainName domain.local -Credential $domainCredential -Restart -Force

إلغاء انضمام النطاق وإعادة الانضمام بشكل تلقائي

بسبب قيامي بتنفيذ هذه العملية مرات كثيرة جدًا، قمت بإنشاء نص برمجي بويرشيل يقوم بكل شيء بالنيابة عنك. إذا قمت بتوفير اسم الكمبيوتر، فسوف يقوم البرنامج بما يلي:

  • إلغاء انضمام الكمبيوتر
  • إعادة التشغيل والانتظار حتى يعود للعمل
  • الانضمام بالكمبيوتر
  • إعادة التشغيل والانتظار حتى يعود للعمل

يمكنك تجربة هذا النص البرمجي عبر GitHub.

ملخص

يجب أن تكون الآن لديك فهم شامل للمشكلة وحلول متعددة لرسالة الخطأ “علاقة الثقة بين هذه المحطة العمل والمجال الأساسي قد فشلت”. آمل أن يوفر لك هذا الدليل بعض الإشارات ويسمح لك بالوصول إلى بعض الحلول الخاصة بك لمشكلة سقوط أجهزة الكمبيوتر من النطاق!

قراءة إضافية

تأكد من التحقق من بعض المشاركات الأخرى ذات الصلة!

Source:
https://adamtheautomator.com/the-trust-relationship-between-this-workstation-and-the-primary-domain-failed/