شرح - windows powershell 4.0 download




يقول PowerShell "يتم تعطيل تنفيذ البرامج النصية على هذا النظام". (15)

  1. افتح PowerShell كمسؤول وقم بتشغيل Set-ExecutionPolicy -Scope CurrentUser
  2. توفير RemoteSigned واضغط على Enter
  3. تشغيل Set-ExecutionPolicy -Scope CurrentUser
  4. توفير غير مقيد واضغط على Enter

أحاول تشغيل ملف .cmd الذي يستدعي برنامج PowerShell النصي من موجه الأوامر ، وأحصل على الخطأ التالي:

لا يمكن تحميل Management_Install.ps1 بسبب تعطيل تنفيذ البرامج النصية على هذا النظام.

لقد ركضت set-executionpolicy unrestricted وعندما أقوم بتشغيل get-executionpolicy من PowerShell أحصل على unrestricted مرة أخرى.

// الإخراج من Powershell

PS C: \ Users \ Administrator> get-executionpolicy

مطلق

// الإخراج من DOS

C: \ Projects \ Microsoft.Practices.ESB \ Source \ Samples \ Management Portal \ Install \ Scr

ipts> powershell. \ Management_Install.ps1 1

تحذير: تشغيل x 86 PowerShell ...

لا يمكن تحميل الملف C: \ Projects \ Microsoft.Practices.ESB \ Source \ Samples \ Management Portal \ Install \ Scripts \ Management_Install.ps1 لأنه تم تعطيل تنفيذ البرامج النصية على هذا النظام. يرجى الاطلاع على "الحصول على مساعدة بشأن_الحاقب" لمزيد من التفاصيل.

على الخط: 1 char: 25

  • . \ Management_Install.ps1 <<<< 1

    • CategoryInfo: NotSpecified: (:) [] ، PSSecurityException

    • FullyQualifiedErrorId: RuntimeException

C: \ Projects \ Microsoft.Practices.ESB \ Source \ Samples \ Management Portal \ Install \ Scripts> pause

اضغط على أى زر للاستمرار . . .

النظام هو نظام التشغيل Windows Server 2008 R2.

ما الخطأ الذي افعله؟


RemoteSigned: سيتم تشغيل جميع البرامج النصية التي قمت بإنشائها بنفسك ، ويجب أن يتم توقيع جميع النصوص البرمجية التي تم تنزيلها من الإنترنت بواسطة ناشر موثوق.

حسنًا ، يمكنك تغيير السياسة ببساطة عن طريق كتابة:

Set-ExecutionPolicy RemoteSigned

إذا كنت تستخدم نظام التشغيل Windows Server 2008 R2 ، فهناك إصدار x64 و x86 من PowerShell اللذين يجب أن يتم تعيين سياسات التنفيذ الخاصة بهما. هل قمت بضبط سياسة التنفيذ على كلا المضيفين؟

بصفتك مسؤولاً ، يمكنك تعيين نهج التنفيذ بكتابة ذلك في نافذة PowerShell الخاصة بك:

Set-ExecutionPolicy RemoteSigned

لمزيد من المعلومات ، راجع استخدام Set-ExecutionPolicy Cmdlet .


إذا كنت في بيئة لا تكون فيها مسؤولاً ، يمكنك تعيين "نهج التنفيذ" من أجلك فقط ، ولن يتطلب الأمر وجود مسؤول.

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

أو

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted"

يمكنك قراءة كل شيء عنه في مدخل المساعدة.

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full

افتح Powershell كمسؤول . سوف يعمل


الفوز + R واكتب الأمر السابق نسخ واضغط موافق

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

وتنفيذ البرنامج النصي الخاص بك

ثم تعود التغييرات مثل

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "AllSigned"


تحديد سياسة التنفيذ خاص بالبيئة. إذا كنت تحاول تنفيذ برنامج نصي من الإصدار x86 من نظام التشغيل ISE عليك استخدام الإصدار x 86 PowerShell لتعيين نهج التنفيذ. وبالمثل ، إذا كنت تقوم بتشغيل الإصدار 64 بت ، فسيتعين عليك تعيين السياسة باستخدام PowerShell 64 بت.


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

من صفحة سياسات TechNet حول التنفيذ :

تسمح لك سياسات تنفيذ Windows PowerShell بتحديد الشروط التي يقوم Windows PowerShell بتحميل ملفات التكوين وتشغيل البرامج النصية.

فوائدها ، كما ذكرتها PowerShell Basics - سياسة التنفيذ وتوقيع التعليمات البرمجية ، هي:

  • السيطرة على التنفيذ - التحكم في مستوى الثقة لتنفيذ البرامج النصية.
  • Command Highjack - منع حقن الأوامر في طريقي.
  • الهوية - هل تم إنشاء البرنامج النصي وتوقيعه بواسطة مطور أثق به و / أو موقّعًا بشهادة من "المرجع المصدق" الذي أثق به.
  • النزاهة - لا يمكن تعديل البرامج النصية بواسطة البرامج الضارة أو المستخدمين المتطفلين.

للتحقق من سياسة التنفيذ الحالية ، يمكنك تشغيل Get-ExecutionPolicy . لكنك على الأرجح هنا لأنك تريد تغييرها.

للقيام بذلك ، ستقوم بتشغيل الأمر Set-ExecutionPolicy cmdlet.

سيكون لديك قراران رئيسيان يجب اتخاذهما عند تحديث سياسة التنفيذ.

نوع سياسة التنفيذ:

  • Restricted - لا يمكن تنفيذ أي سيناريو محلي أو عن بعد أو تنزيل على النظام.
  • AllSigned - كل البرنامج النصي الذي يتم تشغيله يتطلب التوقيع رقمياً.
  • RemoteSigned - يجب RemoteSigned جميع البرامج النصية عن بعد (UNC) أو تنزيلها.
  • Unrestricted - لا يلزم توقيع لأي نوع من النصوص البرمجية.

نطاق التغيير الجديد

  • LocalMachine - تؤثر سياسة التنفيذ على جميع مستخدمي الكمبيوتر.
  • CurrentUser - تؤثر سياسة التنفيذ على المستخدم الحالي فقط.
  • Process - تؤثر سياسة التنفيذ على عملية Windows PowerShell الحالية فقط.

† = افتراضي

على سبيل المثال : إذا أردت تغيير السياسة إلى RemoteSigned لـ CurrentUser فقط ، فقم بتشغيل الأمر التالي:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

ملاحظة : لتغيير نهج التنفيذ ، يجب تشغيل PowerShell As Adminstrator . إذا كنت في الوضع العادي وحاولت تغيير سياسة التنفيذ ، فسوف تحصل على الخطأ التالي:

تم رفض الوصول إلى مفتاح التسجيل 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell'. لتغيير نهج التنفيذ للنطاق الافتراضي (LocalMachine) ، ابدأ تشغيل Windows PowerShell مع خيار "تشغيل كمسؤول".

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

ملاحظة : من المرجح أن يحصل معظم الأشخاص على هذا الخطأ عند فتح Powershell نظرًا لأن أول ما يحاول PS فعله عند تشغيله هو تنفيذ البرنامج النصي لملف تعريف المستخدم الخاص بك الذي يقوم بإعداد البيئة الخاصة بك كيفما تشاء.

يقع الملف عادة في:

%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1

يمكنك العثور على الموقع الدقيق من خلال تشغيل متغير بوويرشيل

$profile

إذا لم يكن هناك أي شيء يهمك في الملف الشخصي ، ولا تريد التمسك بإعدادات الأمان ، يمكنك فقط حذفه ولن تعثر PowerHell على أي شيء لا يمكن تنفيذه.


في PowerShell 2.0 ، تم تعيين نهج التنفيذ لتعطيله بشكل افتراضي.

ومنذ ذلك الحين ، حقق فريق PowerShell الكثير من التحسينات ، وهم واثقون من أن المستخدمين لن يكسروا الكثير أثناء تشغيل البرامج النصية. لذلك من PowerShell 4.0 فصاعدًا ، يتم تمكينه افتراضيًا.

في حالتك ، اكتب Set-ExecutionPolicy RemoteSigned من وحدة التحكم PowerShell وأقول نعم.


في Windows 7:

انتقل إلى قائمة ابدأ وابحث عن "Windows PowerShell ISE".

انقر بزر الماوس الأيمن فوق الإصدار x86 واختر "تشغيل كمسؤول".

في الجزء العلوي ، Set-ExecutionPolicy RemoteSigned بلصق Set-ExecutionPolicy RemoteSigned ؛ قم بتشغيل البرنامج النصي. اختر "نعم".

كرر هذه الخطوات لإصدار 64 بت من Powershell ISE أيضًا (الإصدار x 86).

أنا فقط توضيح الخطوات التي ألمحChad ميلر في. شكرا تشاد!


كان لدي مشكلة مماثلة ولاحظت أن cmd الافتراضي على Windows Server 2012 ، كان يعمل بنظام التشغيل x64 واحد.

بالنسبة لنظام التشغيل Windows 7 أو Windows 8 أو Windows Server 2008 R2 أو Windows Server 2012 ، قم بتشغيل الأوامر التالية كمسؤول :

x86 (32 بت)
افتح C:\Windows\SysWOW64\cmd.exe
تشغيل الأمر powershell Set-ExecutionPolicy RemoteSigned

x64 (64 بت)
افتح C:\Windows\system32\cmd.exe
تشغيل الأمر powershell Set-ExecutionPolicy RemoteSigned

يمكنك التحقق من الوضع باستخدام

  • في CMD: echo %PROCESSOR_ARCHITECTURE%
  • في Powershell: [Environment]::Is64BitProcess

المراجع:
MSDN - سياسات تنفيذ Windows PowerShell
ويندوز - 32 بت مقابل 64bit دليل الشرح


لقد وجدت أن هذا الخط يعمل بشكل أفضل لأحد خوادم Windows Server 2008 R2 الخاصة بي. لم يكن لدى زوجين آخرين مشكلات في هذا السطر دون استخدام هذا الخط في نصوص PowerShell:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process

يعمل أيضًا تشغيل هذا الأمر قبل البرنامج النصي أيضًا على حل المشكلة:

set-executionpolicy unrestricted

يمكنك أيضًا تجاوز هذا باستخدام الأمر التالي:

PS > powershell Get-Content .\test.ps1 | Invoke-Expression

يمكنك أيضًا قراءة هذا المقال بواسطة Scott Sutherland الذي يشرح 15 طريقة مختلفة لتجاوز Powershell Set-ExecutionPolicy إذا لم يكن لديك امتيازات المسؤول.

https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/


يمكننا الحصول على حالة ExecutionPolicy الحالية بواسطة الأمر أدناه:

Get-ExecutionPolicy;

افتراضيا هو مقيد . للسماح بتنفيذ برنامج PowerShell Scripts ، نحتاج إلى تعيين ExecutionPolicy إما على أنه تجاوز أو غير مقيد .

يمكننا تعيين السياسة للمستخدم الحالي Bypass أو Unrestricted باستخدام أي من أمر PowerShell أدناه:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

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

في حين أنه في سياسة تجاوز ، لا يتم حظر أي شيء ولا توجد تحذيرات أو مطالبات أثناء تنفيذ البرنامج النصي. Bypass ExecutionPolicy أكثر استرخاء من غير مقيد.







windows-server-2008-r2