قم بتشغيل الأمر كمسؤول في البرنامج النصي PowerShell. UAC.

StackOverflow https://stackoverflow.com/questions/2248093

سؤال

حسنا هنا مشكلتي:

أحاول تشغيل برنامج نصي عن بعد على الخادم.

أنا مسؤول على كل من الصناديق، استثناءات جدار الحماية في مكانها، يتم تمكين المشرف عن بعد، وكل شيء آخر يبدو جيدا أنني أستطيع أن أرى.

invoke-command -ComputerName $ComputerName -ScriptBlock `
{
    cd C:\Windows\System32\inetsrv\; 
    ./appcmd.exe ADD vdir /app.name:<SiteName>/ /path:/<VDir Name> /physicalPath:<Path to files>
}

استمر في الحصول على الخطأ التالي في المقابل

ERROR ( hresult:80070005, message:Failed to commit configuration changes. Access is denied.

الخادم الذي يحاول تشغيله هو مربع خادم 2K8 R2 خادم وأنا أفكر في المشكلة مشكلة UAC. هل هناك على أي حال للحصول على هذا لتشغيل كمسؤول دون الحاجة إلى النقر فوق "نعم" على مربع UAC؟

ستصبح هذه القطعة من التعليمات البرمجية هذه برنامج نصي يجب أن يكون تلقائيا بالكامل.

سيتم تقدير أي مساعدة إلى حد كبير.

هل كانت مفيدة؟

المحلول

نعم. بعد بعض البحث والاختبار، أحسبت هذه القضية. بعد تعطيل UAC وجدار الحماية والبرنامج النصي لا يزال يعمل، حفرت أعمق قليلا واكتشفت أن القضية الرئيسية هي الطريقة التي يديرها الأمر invoke-cords الأوامر. يستخدم بيانات اعتماد الشخص الذي يدير البرنامج النصي للمصادقة إلى الخادم، ثم يحاول استخدام حساب آخر لتشغيل الأذونات أو يقلل من امتيازات المستخدم بحيث لا يمكن تشغيل بعض الأوامر.

أضفت التبديل redentials إلى أمر Invoke وكل شيء يعمل بشكل رائع الآن. نسخة رمز تصحيح أدناه:

$user = New-Object Management.Automation.PSCredential("$UserName", $securePassword)
invoke-command -ComputerName $ComputerName -Credential $user -ScriptBlock ` 
{ 
    cd C:\Windows\System32\inetsrv\;  
    ./appcmd.exe ADD vdir /app.name:<SiteName>/ /path:/<VDir Name> /physicalPath:<Path to files> 
} 

نصائح أخرى

هذه يبدو أنه يشير إلى أنك بحاجة إلى التأكد من أنك مسؤول محلي على الجهاز البعيد (على الرغم من أنه من المسلم بهذا من أجل WMI على وجه التحديد). بالنسبة الى هذه يمكنك تغيير مفتاح تسجيل لإيقاف UAC التطبيق على تسجيل الدخول عن بعد للمسؤولين (ابحث عن LocalAccounttTokenFilterPolicy). يجب أن لا تعطيل UAC فقط لا تصفية الرمز المميز إذا كنت تستخدم PowerShell / WMI عن بعد مع حساب المسؤول.

قم بتعيين الخيار "enableelua" (قيمة DWORD) الموجودة في HKLM Software Microsoft Windows CurrentVersion سياسات System Systems إلى 0 وإعادة التشغيل.

سيقوم ذلك بتعطيل UAC دون مشكلة، وأود أن أفعل ذلك لجميع مستخدميك، سواء كان مع أو بدون إذن متروك لك، لأن نظام التشغيل Vista UAC مروع للغاية وأعتقد أن الأشخاص الأقل لديهم في الأفضل (على الأقل في فيستا) هم. Thsi خدعة تعمل أيضا في Win7 أيضا.

استمتع مع خدعة التسجيل الخاصة بي :)

ملاحظة: كما اتضح ذلك هو رقابة على التعليقات التي تظهر كيفية تعطيل UAC فيما يتعلق بي / ترابط مع الإجابة المذكورة أعلاه (تمت إزالة إجابة مجوبة).

هل هناك على أي حال للحصول على هذا لتشغيل كمسؤول دون الحاجة إلى النقر فوق "نعم" على مربع UAC؟

إذا كان هذا ممكنا، فسوف يهزم تماما نقطة UAC.

وبالتالي، سيظهر الحل الحقيقي الوحيد هو تعطيل UAC في المربع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top