পাওয়ারশেল বলছেন "স্ক্রিপ্টগুলির সম্পাদন এই সিস্টেমে অক্ষম করা আছে।"


1760

আমি একটি চালানোর চেষ্টা করছি কল যে ফাইল থেকে স্ক্রিপ্ট cmd.exe, এবং আমি নীচের ত্রুটি পাচ্ছি:

Management_Install.ps1 লোড করা যায় না কারণ এই সিস্টেমে স্ক্রিপ্টগুলি কার্যকর করা অক্ষম।

আমি দৌড়েছি

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

এবং যখন আমি Get-ExecutionPolicyথেকে চালানোআমি Unrestrictedফিরে আসি।

PS C:\Users\Administrator\> Get-ExecutionPolicy
Unrestricted

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> powershell .\Management_Install.ps1 1

WARNING: Running x86 PowerShell...

ফাইলটি C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1লোড করা যায় না কারণ এই সিস্টেমে স্ক্রিপ্টগুলির সম্পাদন অক্ষম করা আছে। get-help about_signingআরও বিশদে " " দেখুন।

লাইনে: 1 চর: 25

  • .\Management_Install.ps1 <<<< 1

    • বিভাগে তথ্য: স্পষ্টিত নয়: (:) [], পিএসএস সিকিউরিটি এক্সেপশন x

    • ফুলকুইলিফায়েড এরিয়ারআইডি: রানটাইম এক্সেপশন

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

Press any key to continue . . .

সিস্টেমটি উইন্ডোজ সার্ভার 2008 আর 2।

আমি কি ভুল করছি?


3
সাথী কোনও চেহারা নেই, আমি প্রশাসক হিসাবে লগ ইন এবং "অ্যাডমিনিস্ট্রেটর" হিসাবে একটি রানও করেছি এবং উপরের মত একই ফলাফল পেয়েছি ...
কনর

2
এর তলদেশে গিয়েছিলাম, ত্রুটিটি বিভ্রান্তিকর ছিল, সমস্যাটি আমার পাওয়ার শেল স্ক্রিপ্টে ছিল, ধন্যবাদ!
কনর 0

এক্সিকিউশন পলিসি বেশ কয়েকটি স্কোপ বহন করে, এবং বিভিন্নভাবে পাওয়ারশেল চালানো আপনাকে বিভিন্ন নীতি পেতে পারে তা উল্লেখ করার মতো বিষয় worth নীতিগুলির তালিকা দেখতে, চালান Get-ExecutionPolicy -List
বেকন বিট 16

উত্তর:


2238

আপনি যদি উইন্ডোজ সার্ভার 2008 আর 2 ব্যবহার করেন তবে পাওয়ারশেলের একটি x64 এবং x86 সংস্করণ রয়েছে যার দুটিতে তাদের কার্যকর করার নীতি সেট করতে হবে। আপনি উভয় হোস্টে ফাঁসির নীতি সেট করেছেন?

প্রশাসক হিসাবে , আপনি আপনার পাওয়ারশেল উইন্ডোতে টাইপ করে সম্পাদন নীতি সেট করতে পারেন:

Set-ExecutionPolicy RemoteSigned

আরও তথ্যের জন্য, সেট-এক্সিকিউশনপলিসি সিএমডলেট ব্যবহার করে দেখুন ।

আপনার হয়ে গেলে, আপনি নীতির সাথে তার ডিফল্ট মানটিতে আবার সেট করতে পারেন:

Set-ExecutionPolicy Restricted

141
Set-ExecutionPolicy Restrictedআপনি যদি অনুমতিগুলি সেভাবে ফিরিয়ে দিতে চান তবে এটিকে পূর্বাবস্থায় ফেলার উপায় বলে মনে হচ্ছে: টেকনিকেট.মাইক্রোসফট / ওয়েবসাইট- লাইব্রেরি / আই 176961.aspx । অস্থায়ী বাইপাস পদ্ধতিটি @Jack Edmondsআমার কাছে আরও নিরাপদ দেখাচ্ছে:powershell -ExecutionPolicy ByPass -File script.ps1
শার্পসি

33
আরও সুরক্ষিত নীতিমালার জন্য, প্রকৃত ব্যবহারকারীর কাছে এটিকে স্কোপ করুন: সেট-এক্সিকিউশনপলিসি রিমোটসাইনড -স্কোপ কারেন্ট ইউজার
নুনো অ্যানিসেটো

সেট-এক্সিকিউশনপলিসি রিমোটসাইনড আপনার স্ক্রিপ্টের প্রথম লাইন হতে পারে না। যদি তা হয় তবে এটি হাইলাইট করুন এবং আপনার স্ক্রিপ্টের বাকী অংশটি চালানোর আগে কেবল প্রাথমিকভাবে নির্বাচন করুন।
ozzy432836

আমি এসএফ সাইটে একই ধরণের প্রশ্ন পেয়েছিলাম, "এসকিউএল সার্ভারের মধ্যে পাওয়ারশেল এক্সিকিউশন পলিসি" 10 অক্টোবর জিজ্ঞাসা Get-ExecutionPolicy -Listকরেছিল । সেখানে উত্তরগুলি অন্তর্ভুক্ত করেছিল যা আমাকে বিভিন্ন স্কোপগুলি দেখতে সহায়তা করেছিল। সেন্টিমিডি Get-ExecutionPolicyসমস্ত স্কোপগুলি দেখায় না Import-Module SQLPSnow এখন কাজ করছে working পরিবর্তন নীতি অনুসরণ করে: {Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}
SherlockSpreadsheets

যদি আমি এটি করি, পরিবর্তনটি কি কেবলমাত্র বর্তমান পাওয়ারশেলের সময়কালের জন্য স্থায়ী হয়? নাকি এর চেয়ে বড়?
উইলিয়াম জকুশ ১৯২১-

709

-ExecutionPolicy Bypassপাওয়ারশেল চলাকালীন যোগ করে আপনি একক ফাইলের জন্য এই নীতিটিকে বাইপাস করতে পারেন

powershell -ExecutionPolicy Bypass -File script.ps1

3
আপনি যদি প্রশাসনিক কোনও অ্যাকাউন্টে না থাকেন তবে এটি সত্যিই কার্যকর y আমি %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPassআমার টাস্কবারে একটি শর্টকাট তৈরি করেছি।
zek19

3
নোট করুন যে মাইক্রোসফ্ট টেকনেট এটিকে "বাইপাস" হিসাবে নয়, "বাইপাস" হিসাবে স্টাইলাইজ করেছে। দেখুন: technet.microsoft.com/nl-nl/library/hh849812.aspx
Jelle Geerts

1
এটি আমার পক্ষে কাজ করে না, আমি একই অনুমতিটিকে অস্বীকার করি যেন আমি এটি সাধারণভাবে বলেছি called একটি .bat থেকে একটি পিএস 1 কল type script.ps1 | powershell -করে কাজ করে না।
কিছু_গুই

8
এক্সিকিউশন পলিসির উদ্দেশ্য হ'ল লোকজনকে দু'বার ক্লিক .ps1করতে এবং দুর্ঘটনাক্রমে এমন কিছু চালানো থেকে বিরত রাখা যা তারা বোঝাতে চাইছিল না। .batফাইলগুলির সাথে এটি ঘটবে
কলব ক্যানিয়ন

আপনি আমার দিন সংরক্ষণ করুন উত্তরের জন্য আপনাকে ধন্যবাদ।
অর্পিত প্যাটেল

162

আমি একটি অনুরূপ সমস্যা ছিল এবং লক্ষনীয় যে ডিফল্ট cmdউপর উইন্ডোজ সার্ভার 2012 , x64 এক দৌড়াচ্ছিলাম।

জন্য উইন্ডোজ 7 , উইন্ডোজ 8 , উইন্ডোজ 10 , উইন্ডোজ সার্ভার 2008 R2 বা উইন্ডোজ সার্ভার 2012 , যেমন নিম্নলিখিত কমান্ড সঞ্চালন করুন প্রশাসক :

x86 (32 বিট) কমান্ড
খুলুনC:\Windows\SysWOW64\cmd.exe
powershell Set-ExecutionPolicy RemoteSigned

x64 (64 বিট)
ওপেন C:\Windows\system32\cmd.exe
রান কমান্ডpowershell Set-ExecutionPolicy RemoteSigned

আপনি মোড ব্যবহার করে চেক করতে পারেন

  • সিএমডিতে: echo %PROCESSOR_ARCHITECTURE%
  • পাওয়ারশেলে: [Environment]::Is64BitProcess

তথ্যসূত্র:
এমএসডিএন - উইন্ডোজ পাওয়ারশেল কার্যকরকরণের নীতিগুলি
উইন্ডোজ - 32 বিট বনাম 64 বিবিটি ডিরেক্টরি ব্যাখ্যা


132

বিদ্যমান উত্তরগুলির বেশিরভাগই কীভাবে ব্যাখ্যা করে তবে খুব কমই কেন তা ব্যাখ্যা করে । এবং ইন্টারনেটে অপরিচিতদের কাছ থেকে কোড কার্যকর করার আগে, বিশেষত এমন কোড যা সুরক্ষা ব্যবস্থা অক্ষম করে, আপনি ঠিক কী করছেন তা আপনার বুঝতে হবে। সুতরাং এই সমস্যাটি সম্পর্কে এখানে আরও কিছু বিশদ।

এক্সিকিউশন পলিসি পৃষ্ঠা সম্পর্কে টেকনেট থেকে :

উইন্ডোজ পাওয়ারশেল কার্যকরকরণের নীতিগুলি আপনাকে সেই শর্তগুলি নির্ধারণ করতে দেয় যার অধীনে উইন্ডোজ পাওয়ারশেল কনফিগারেশন ফাইলগুলি লোড করে এবং স্ক্রিপ্টগুলি চালায়।

পাওয়ারসেল বেসিকস - এক্সিকিউশন পলিসি এবং কোড সাইন ইন দ্বারা অঙ্কিত হিসাবে এর সুবিধাগুলি হ'ল :

  • সম্পাদন নিয়ন্ত্রণ - স্ক্রিপ্টগুলি কার্যকর করার জন্য আস্থার স্তর নিয়ন্ত্রণ করুন।
  • কমান্ড হাইজ্যাক - আমার পথে কমান্ডগুলির ইনজেকশন প্রতিরোধ করুন।
  • পরিচয় - স্ক্রিপ্টটি এমন কোনও বিকাশকারী দ্বারা তৈরি করা এবং স্বাক্ষরিত হয় যা আমি বিশ্বাস করি এবং / অথবা আমি বিশ্বাস করি এমন শংসাপত্র কর্তৃপক্ষের শংসাপত্র সহ স্বাক্ষরিত।
  • সত্যতা - স্ক্রিপ্টগুলি ম্যালওয়ার বা দূষিত ব্যবহারকারীর দ্বারা সংশোধন করা যায় না।

আপনার বর্তমান সম্পাদন নীতি পরীক্ষা করতে, আপনি চালাতে পারেন Get-ExecutionPolicy। তবে আপনি সম্ভবত এখানে আছেন কারণ আপনি এটি পরিবর্তন করতে চান।

এটি করার জন্য আপনি Set-ExecutionPolicyসেমিডলেটটি চালাবেন।

কার্যকর করার নীতিটি আপডেট করার সময় আপনার দুটি বড় সিদ্ধান্ত নিতে হবে।

এক্সিকিউশন নীতি প্রকার:

  • Restricted - স্থানীয়, দূরবর্তী বা ডাউনলোড করা কোনও স্ক্রিপ্ট সিস্টেমে কার্যকর করা যায় না।
  • AllSigned - চালিত সমস্ত স্ক্রিপ্টের ডিজিটালি স্বাক্ষর করা দরকার।
  • RemoteSigned - সমস্ত রিমোট স্ক্রিপ্ট (ইউএনসি) বা ডাউনলোড করাতে স্বাক্ষর করা দরকার।
  • Unrestricted - কোনও ধরণের স্ক্রিপ্টের জন্য কোনও স্বাক্ষরের প্রয়োজন নেই।

নতুন পরিবর্তনের সুযোগ

  • LocalMachine - কার্যকরকরণের নীতিটি কম্পিউটারের সমস্ত ব্যবহারকারীকে প্রভাবিত করে।
  • CurrentUser - কার্যকর করার নীতিটি কেবলমাত্র বর্তমান ব্যবহারকারীকেই প্রভাবিত করে।
  • Process - কার্যকরকরণের নীতিটি কেবলমাত্র বর্তমান উইন্ডোজ পাওয়ারশেল প্রক্রিয়াটিকে প্রভাবিত করে।

† = ডিফল্ট

উদাহরণস্বরূপ : আপনি যদি কেবল বর্তমান ব্যবহারকারীর জন্য নীতিটি রিমোটসাইনডে পরিবর্তন করতে চান তবে আপনি নিম্নলিখিত কমান্ডটি চালাবেন:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

দ্রষ্টব্য : এক্সিকিউশন নীতি পরিবর্তন করতে, আপনাকে অবশ্যই প্রশাসক হিসাবে পাওয়ারশেল চালিত হতে হবে । আপনি যদি নিয়মিত মোডে থাকেন এবং এক্সিকিউশন পলিসিটি পরিবর্তন করার চেষ্টা করেন তবে আপনি নিম্নলিখিত ত্রুটিটি পাবেন:

'HKEY_LOCAL_MACHINE OF সফটওয়্যার \ মাইক্রোসফ্ট \ পাওয়ারশেল \ 1 \ শেলআইডস \ মাইক্রোসফট.পাওয়ারশেল' রেজিস্ট্রি কীটিতে অ্যাক্সেস অস্বীকৃত। ডিফল্ট (লোকালম্যাচাইন) স্কোপের জন্য কার্যকরকরণের নীতিটি পরিবর্তন করতে, "প্রশাসক হিসাবে চালান" বিকল্পের সাহায্যে উইন্ডোজ পাওয়ারশেল শুরু করুন।

আপনি যদি ইন্টারনেট থেকে ডাউনলোড না হওয়া নিজের স্ক্রিপ্টগুলিতে (বা কমপক্ষে ইউএনসি মেটাডেটা ধারণ করে না) অভ্যন্তরীণ বিধিনিষেধগুলি আরও শক্ত করতে চান তবে আপনি নীতিটি কেবল স্বাক্ষরিত লিপিগুলি চালাতে বাধ্য করতে পারেন। আপনার নিজের স্ক্রিপ্টগুলিতে স্বাক্ষর করতে, আপনি স্কট হ্যানসেলম্যানের নিবন্ধ পাওয়ারশেল স্ক্রিপ্টগুলিতে নিবন্ধটি অনুসরণ করতে পারেন ।

দ্রষ্টব্য : বেশিরভাগ লোকেরা যখনই পাওয়ারশেলটি খোলেন তখনই এই ত্রুটিটি পাওয়া যাবে কারণ PS যখন এটি প্রথম চালু করার চেষ্টা করে তখন আপনার ব্যবহারকারী প্রোফাইল স্ক্রিপ্টটি কার্যকর করে যা আপনার পরিবেশ সেট আপ করে তবে আপনি এটি পছন্দ করেন।

ফাইলটি সাধারণত এতে অবস্থিত:

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

পাওয়ারশেল ভেরিয়েবলটি চালিয়ে আপনি সঠিক অবস্থানটি সন্ধান করতে পারেন

$profile

প্রোফাইলে আপনার যত্ন করার মতো কিছু নেই এবং আপনার সুরক্ষা সেটিংসের সাথে ঝাঁকুনি না দিতে চাইলে আপনি কেবল এটি মুছতে পারেন এবং পাওয়ারশেল এমন কোনও কিছুই খুঁজে পাবেন না যা এটি কার্যকর করতে পারে না।


8
আমি মনে করি যে এটি কার্যকর করা গুরুত্বপূর্ণ যে নিক্ষেপণ নীতিটি একটি সুরক্ষা পরিমাপের পরেও, এটি ব্যবহারকারীদের পাওয়ারশেল কোড কার্যকর করতে বাধা দেওয়ার উদ্দেশ্যে নয়। এক্সিকিউশন নীতি এমন একটি জিনিস যা আপনার স্ক্রিপ্টগুলি সুরক্ষিত করতে এবং কে লিখেছিল, সংশোধন করেছে বা এগুলিকে অনুমোদন করেছে এবং ঠিক আছে তা নির্ধারণ করার উদ্দেশ্যে । সাধারণ হিসাবে কিছু সাধারণের সাথে মৃত্যুদন্ড কার্যকর করার নীতিটি ঘুরে আসা তুচ্ছ Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -
বেকন বিটস

1
-ExecutionPolicy ByPassযদিও অস্তিত্ব দেওয়া , যাইহোক এই নীতিটির উদ্দেশ্য কী? এটি কি কেবল ব্যবহারকারীদের ভুলক্রমে পাওয়ারশেল কনসোলটি খোলার এবং দূষিত স্ক্রিপ্ট চালানো থেকে বিরত রাখার জন্য? আক্রমণকারী যদি এটির কাছাকাছি যেতে চায় তবে কেবল এক্সিকিউটেবল বা ব্যাচের স্ক্রিপ্টটি ব্যবহার করতে পারে না? এমনকি @ ব্যাকনবিটস মন্তব্য পড়ার পরেও আমি নিশ্চিত নই যে এই নীতিটি কোন পরিস্থিতিতে রোধ করার জন্য বোঝানো হচ্ছে ...
আজেদি 32

2
@ আজেদী 32 বলুন আমার একটি কাজ আছে যা একটি নেটওয়ার্ক শেয়ারে একটি স্ক্রিপ্ট চালায়। আমি যখন আমার স্ক্রিপ্টটি চালু করি, আমি চাই যে আমার প্রক্রিয়াটি স্ক্রিপ্ট স্বাক্ষরিত হয়েছে তা যাচাই করা হোক। আমি চাই যে আমার কোডটি দ্বিগুণ পরীক্ষা করে দেখুন যে স্ক্রিপ্টটি আমি চালাচ্ছি তা হ'ল কোডটি আমার চালানো বিশ্বাস। আপনি আমার কোডটি চালাতে পারছেন কিনা তা আমি চিন্তা করি না। এটি বন্ধ করা হ'ল অ্যাক্সেস রাইটসের কাজ। আমি কেবল আপনাকে রান কোড তৈরি করতে বাধা দিতে চাই যা আমি লিখি না। অ্যাক্সেস রাইটসের অর্থ অপারেটিং সিস্টেমটি যখন আপনি লগ ইন করেন তখন আমার কোডটি পরিবর্তন করতে আপনাকে বাধা দেয়। Code Signing ও মৃত্যুদন্ড নীতি মানে আমার স্ক্রিপ্ট পরিবর্তন করা হয় নি যখন আমি এটি চালানোর জন্য যান।
বেকন বিট 21

40

উইন্ডোজ 7 এ:

স্টার্ট মেনুতে যান এবং "উইন্ডোজ পাওয়ারশেল আইএসই" অনুসন্ধান করুন।

X86 সংস্করণে ডান ক্লিক করুন এবং "প্রশাসক হিসাবে চালান" চয়ন করুন।

উপরের অংশে, পেস্ট করুন Set-ExecutionPolicy RemoteSigned; স্ক্রিপ্ট চালান। "হ্যাঁ" চয়ন করুন।

পাওয়ারশেল আইএসই-এর খুব বেশি 64৪-বিট সংস্করণের জন্য এই পদক্ষেপগুলি পুনরাবৃত্তি করুন (x x সংস্করণ নয়)।

@ চ্যাড মিলার ইঙ্গিত করেছিলেন এমন পদক্ষেপগুলি আমি কেবল পরিষ্কার করছি। থ্যাঙ্কস চাদ!


39

স্ক্রিপ্টটিও সমস্যার সমাধান করার আগে এই আদেশটি চালানো:

set-executionpolicy unrestricted

27
-1 - নূন্যতম অনুমতি নীতি অনুসরণ করুন। RemoteSignedআপনার সুরক্ষা নীতিতে সমস্ত বিধিনিষেধ অপসারণ করার আগে কমপক্ষে নীতিটি সেট করুন । যদি এটি কাজ করে না, তবে আপনার ব্যথার পয়েন্টগুলি কী এবং এটি কেন কাজ করছে না তা পুনরায় মূল্যায়ন করুন। আপনি unrestrictedএকটি সর্বশেষ অবলম্বন হিসাবে সেট করতে পারেন , তবে এটি আপনার প্রারম্ভিক পয়েন্ট হওয়া উচিত নয়।
কাইলমিত

3
এই বিকল্পটিও দেখানোর জন্য ধন্যবাদ। উত্পাদনের উদ্দেশ্যে সুরক্ষার প্রয়োজনীয়তার প্রতি যথাযথ সম্মানের সাথে, যখন দ্রুত প্রোটোটাইপিং সক্ষমতা চাহিদা এত বেশি থাকে, সমস্ত নীতি এবং সুরক্ষা সত্যই জিনিসগুলি সম্পন্ন করার পথে পায়।
তিশমা

1
মন্তব্যটি প্রোটোটাইপিংয়ের বিষয়ে, আমি ভয় করি যে এই কারণেই ক্রিপি কোডটি উত্পাদনে আসে। অবশ্যই এটি কেবল একটি তুচ্ছ উদাহরণ, তবে আপনি যদি বিকাশের সময় এই তুচ্ছ কিছুকে সমাধান করতে না পারেন তবে এটি মুক্তির জন্য উদ্বেগ। এছাড়াও, বিসপোক কোডের জন্য, এবং আপনি যদি পারেন তবে লক্ষ্য পরিবেশটি জানতে পারেন - আমরা আমাদের অভ্যন্তরীণ সিস্টেমগুলির সিংহভাগকে সেট করি Remotesigned
ট্রিক্স

33

আপনি যদি এমন পরিবেশে থাকেন যেখানে আপনি প্রশাসক নন, আপনি কেবলমাত্র আপনার জন্য এক্সিকিউশন নীতি সেট করতে পারেন, এবং এটি প্রশাসকের প্রয়োজন হবে না not

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

অথবা

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

সহায়তা এন্ট্রিতে আপনি এটি সম্পর্কে সমস্ত পড়তে পারেন।

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

উইন্ডোজ 8-এ আমার জন্য দুর্দান্ত কাজ করেছেন, এমনকি যখন Set-ExecutionPolicy Unrestrictedকোনও প্রশাসক বাস্তবে সহায়তা করার পক্ষে যথেষ্ট "প্রতিরোধ" করে না বলে মনে হয়।
পৃষ্ঠপোষক

1
আমি বিশ্বাস করি আপনি যা अनुभव করতে পারেন তা হ'ল জিপিও বা অন্য কিছু যা আপনার এক্সিকিউশনপলিসির "লোকালম্যাচাইন" স্তরের সেটিংটি ওভাররাইট করে। সেট-এক্সিকিউশনপলিসি কমান্ডের সাহায্যে একটি ডোমেন নীতি কী রয়েছে তা আপনি ওভাররাইট করতে পারবেন না। যাইহোক, তবে অ্যাক্সেসের "কারেন্ট ইউজার" স্তরটি নির্ধারণ করে আপনি এবং কেবলমাত্র আপনার জন্য নির্দিষ্ট এক্সিকিউশন নীতি থাকবে। এটি কারণ লোকালম্যাচাইন সেটিংটি দেখার আগে কম্পিউটারটি এক্সিকিউশন পলিসির জন্য বর্তমান ব্যবহারকারীর দিকে নজর দেয়।
মিকাহ 'পাওয়ারশেল নিনজা'

1
সেট-এক্সিকিউশনপলিসি -স্কোপ "কারেন্ট ইউজার" -অ্যাক্সিউশন পলিসি "অনির্কিত" কেবলমাত্র আমার জন্য কাজ করা সমাধান। আপনাকে ধন্যবাদ
Paulj

32

রিমোটসাইনড: আপনার নিজের তৈরি করা সমস্ত স্ক্রিপ্টগুলি চালানো হবে এবং ইন্টারনেট থেকে ডাউনলোড করা সমস্ত স্ক্রিপ্টগুলি বিশ্বস্ত প্রকাশকের দ্বারা স্বাক্ষর করা দরকার।

ঠিক আছে, কেবল টাইপ করে নীতি পরিবর্তন করুন:

Set-ExecutionPolicy RemoteSigned

যেমন অন্য পোস্টে সুপারিশ করা হয়েছে: এটি আরও কার্যকর সুরক্ষিত নীতিমালার জন্য "-স্কোপ কারেন্ট ইউজার" অন্তর্ভুক্ত করা বুদ্ধিমানের কাজ হবে।
ক্লাস্টারডুড

32

আমরা ExecutionPolicyনীচের কমান্ড দ্বারা বর্তমানের স্থিতি পেতে পারি :

Get-ExecutionPolicy;

ডিফল্টরূপে এটি সীমাবদ্ধ । পাওয়ারশেল স্ক্রিপ্টগুলির সম্পাদনের অনুমতি দেওয়ার জন্য আমাদের এই এক্সিকিউশনপলিসিকে বাইপাস বা সীমাহীনভাবে সেট করা দরকার ।

আমরা নীচের যে কোনও পাওয়ারশেল কমান্ড ব্যবহার করে Bypassবা বর্তমান ব্যবহারকারীর জন্য নীতি সেট করতে পারি Unrestricted:

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

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

সীমাবদ্ধ নীতি সমস্ত কনফিগারেশন ফাইল লোড করে এবং সমস্ত স্ক্রিপ্ট চালায়। আপনি যদি ইন্টারনেট থেকে ডাউনলোড করা স্বাক্ষরবিহীন স্ক্রিপ্টটি চালনা করেন তবে চালানোর আগে আপনাকে অনুমতি দেওয়ার জন্য অনুরোধ করা হবে।

যদিও বাইপাস নীতিতে, কোনও কিছুই অবরুদ্ধ নয় এবং স্ক্রিপ্ট কার্যকর করার সময় কোনও সতর্কতা বা অনুরোধ জানানো হয় না। বাইপাস এর ExecutionPolicyচেয়ে বেশি স্বচ্ছন্দ Unrestricted


4
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force; ভিএস2015 কে বলার অপেক্ষা রাখে না এবং আমার রক্তাক্ত স্ক্রিপ্টটি চালানোর জন্য এ কেএ দ্রুত এবং নোংরা উপায়। ধন্যবাদ। রক্ষাকর্তা।
Eon

1
আপনার কমান্ডগুলির শেষের দিকের পিছন করা সেমিকোলনগুলি অতিরিক্ত অতিরিক্ত।
বিল_সেটওয়ার্ট

23

আমি উইন্ডোজ 10 ব্যবহার করছি এবং কোনও কমান্ড চালাতে অক্ষম। একমাত্র আদেশ যা আমাকে কিছু ক্লু দিয়েছিল তা হ'ল:

[X64]

  1. ওপেন সি: \ উইন্ডোজ \ সিএসডাব্লু 64৪ \ সেমিডি.এক্সই [প্রশাসক হিসাবে]
  2. কমান্ডটি চালান> পাওয়ারশেল সেট-এক্সিকিউশনপলিসি সীমাহীন

তবে এটি কার্যকর হয়নি। এটি সীমাবদ্ধ ছিল। সম্ভবত উইন্ডোজ 10 এর জন্য নতুন সুরক্ষা নীতিগুলি। আমার এই ত্রুটি ছিল:

সেট-এক্সিকিউশনপলিসি: উইন্ডোজ পাওয়ারশেল আপনার এক্সিকিউশন পলিসিটি সফলভাবে আপডেট করেছে, তবে সেটিংটি আরও নির্দিষ্ট সুযোগে সংজ্ঞায়িত নীতি দ্বারা ওভাররাইড করা হয়েছে। ওভাররাইডের কারণে, আপনার শেল এর বর্তমান কার্যকর কার্যকরকরণের নীতিটি ধরে রাখবে ...

সুতরাং আমি অন্য উপায় খুঁজে পেয়েছি ( সমাধান ):

  1. ওপেন রান কমান্ড / কনসোল ( Win+ R)
  2. প্রকার: gpedit.msc ( গোষ্ঠী নীতি সম্পাদক)
  3. স্থানীয় কম্পিউটার নীতি -> কম্পিউটার কনফিগারেশন -> প্রশাসনিক টেম্পলেট -> উইন্ডোজ উপাদান -> উইন্ডোজ পাওয়ারশেল ব্রাউজ করুন ।
  4. সক্ষম করুন " স্ক্রিপ্ট সম্পাদন চালু করুন "
  5. প্রয়োজন মতো নীতি সেট করুন। আমি " সমস্ত স্ক্রিপ্টগুলিকে মঞ্জুরি দিন " এ সেট করি ।

এখন পাওয়ারশেলটি খুলুন এবং উপভোগ করুন;)


এটি কি একা একা ইনস্টলেশন, না আপনি কোনও ওয়ার্কগ্রুপ বা ডোমেনের সাথে সংযুক্ত আছেন?
MEMark

কেন এটি খুলতে সেন্টিমিডি করবেন? শুধু আইএসই খুলুন (প্রশাসক হিসাবে) এবং টাইপ করুনSet-ExecutionPolicy RemoteSigned
কলব ক্যানিয়ন

ওএমজি এটি অবশেষে আমার উইন 10 বাক্স ঠিক করেছে, @ কলব সেট-এক্সিকিউশনপলসি যথেষ্ট নয়
xer0x

আপনার ব্যবহার করা উচিত নয় Unrestricted। এটি ব্যবহার করা আরও ভাল অনুশীলনRemoteSigned
কলব ক্যানিয়ন

@ xer0x আপনি প্রশাসক হিসাবে পাওয়ারশেল চালানো যতক্ষণ হওয়া উচিত
ক্যানিয়ন

10

কার্যকর করার নীতি নির্ধারণ করা পরিবেশ-নির্দিষ্ট। আপনি যদি চলমান x86 ISE থেকে কোনও স্ক্রিপ্ট কার্যকর করতে চেষ্টা করছেন তবে এক্সিকিউশন পলিসি সেট করতে আপনাকে x86 পাওয়ারশেল ব্যবহার করতে হবে। তেমনি, আপনি যদি 64-বিট আইএসই চালাচ্ছেন তবে আপনাকে 64-বিট পাওয়ারশেলের সাহায্যে নীতি সেট করতে হবে।


10

Win+ Rএবং কপি পেস্ট কমান্ড টাইপ করুন এবং টিপুন OK:

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

এবং আপনার স্ক্রিপ্ট কার্যকর।

তারপরে পরিবর্তনগুলি আবার ফিরিয়ে দিন:

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

10

আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে এটিকে বাইপাস করতে পারেন:

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

আপনি স্কট সুদারল্যান্ডের এই নিবন্ধটিও পড়তে পারেন যা Set-ExecutionPolicyপ্রশাসকের সুযোগ না থাকলে পাওয়ারশেলকে বাইপাস করার 15 টি বিভিন্ন উপায়ের ব্যাখ্যা দেয়:

পাওয়ারশেল এক্সিকিউশন নীতিকে বাইপাস করার 15 টি উপায়


এই সীমাবদ্ধতাটি সমস্যা সমাধানের জন্য এবং বোঝার জন্য এটি সম্ভবত সবচেয়ে বাধ্যকারী গাইডগুলির মধ্যে একটি।
ওসভালদো মার্কাডো

5
  1. প্রশাসক হিসাবে পাওয়ারশেল খুলুন এবং চালান সেট-এক্সিকিউশনপলিসি -স্কোপ কারেন্ট ইউজারটি চালান
  2. প্রদান করুন RemoteSigned করুন ও Enter টিপুন
  3. চালান সেট-ExecutionPolicy -Scope CurrentUser
  4. প্রদান করুন অবারিত করুন ও Enter টিপুন

5

আপনি এটি ব্যবহার করে "সমস্ত" বিকল্পটি বেছে নিতে পারেন

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

3

পাওয়ারশেল আইএসই সম্পাদকটিতে আমি নিম্নলিখিত লাইনটি প্রথমে অনুমোদিত স্ক্রিপ্টগুলি দেখতে পেলাম।

Set-ExecutionPolicy RemoteSigned -Scope Process

2

পাওয়ারশেল ২.০ এ, এক্সিকিউশন পলিসিটি ডিফল্টরূপে অক্ষম করে সেট করা হয়েছিল।

তার পর থেকে, পাওয়ারশেল টিম অনেক উন্নতি করেছে এবং তারা আত্মবিশ্বাসী যে স্ক্রিপ্টগুলি চালানোর সময় ব্যবহারকারীরা জিনিসগুলি খুব বেশি ভাঙবেন না। সুতরাং পাওয়ারশেল ৪.০ থেকে, এটি ডিফল্টরূপে সক্ষম হয়।

আপনার ক্ষেত্রে, Set-ExecutionPolicy RemoteSignedপাওয়ারশেল কনসোল থেকে টাইপ করুন এবং হ্যাঁ বলুন।


2

আমারও আজ একই সমস্যা ছিল। -৪-বিট কার্যকরকরণের নীতি নিষিদ্ধ ছিল, যখন ৩২-বিট সীমাবদ্ধ ছিল।

এখানে কেবল 32-বিট নীতিটি কীভাবে পরিবর্তন করা যায় তা এখানে:

Invoke-Command -ComputerName $servername -ConfigurationName Microsoft.PowerShell32 -scriptblock {Set-ExecutionPolicy unrestricted}

2

রেজিস্ট্রি পথে যান HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShellএবং সেট ExecutionPolicyকরুন RemoteSigned


1
1. প্রশাসক রূপে খুলুন PowerShell এবং চালানোর সেট-ExecutionPolicy -Scope CurrentUser 2. প্রদান RemoteSigned করুন ও Enter টিপুন 3. চালান সেট-ExecutionPolicy -Scope CurrentUser 4. প্রদান অবারিত করুন ও Enter টিপুন
Ramanujam allam

2

আমি চালানোর চেষ্টা করার সময় আমি আরেকটি সতর্কতা পাই Set-ExecutionPolicy RemoteSigned

আমি এই আদেশগুলি দিয়ে সমাধান করেছি

Set-ExecutionPolicy "RemoteSigned" -Scope Process -Confirm:$false

Set-ExecutionPolicy "RemoteSigned" -Scope CurrentUser -Confirm:$false

1

আপনি যদি এটি রুবি বা শেফের সাথে চালানোর কারণে এবং execution `সিস্টেম এক্সিকিউশন ব্যবহারের কারণে এখানে থাকেন তবে নিম্নলিখিত হিসাবে কার্যকর করুন:

`powershell.exe -ExecutionPolicy Unrestricted -command [Environment]::GetFolderPath(\'mydocuments\')`

এই আদেশটি "মাই ডকুমেন্টস" ফোল্ডার পাওয়ার জন্য।

-ExecutionPolicy Unrestricted কৌতুক করে

আমি আশা করি এটি অন্য কারও জন্য সহায়ক।


ঘেরটি `` সত্যই সেখানে থাকা উচিত?
পিটার মর্টেনসেন

1

বেশ কয়েকটি উত্তর কার্যকর করার নীতি নির্দেশ করে। তবে কিছু জিনিসের জন্য "রানাস প্রশাসক" প্রয়োজন administrator এটি সবচেয়ে নিরাপদ যে বাস্তবায়নের নীতিতে কোনও স্থায়ী পরিবর্তন নেই এবং অতীতে প্রশাসকের সীমাবদ্ধতা পেতে পারে। এর সাথে একটি ব্যাচ শুরু করতে সময়সূচির সাহায্যে ব্যবহার করুন:

    runas.exe /savecred /user:administrator powershell -ExecutionPolicy ByPass -File script.ps1

উপরের জ্যাক এডমন্ডস এবং পোস্টারের পিটার মর্টেনসেন / ধানা উভয় থেকেই কমান্ড প্রম্পট থেকে "প্রশাসক হিসাবে রান" হিসাবে অ্যাপ্লিকেশনটি কীভাবে চালানো যায়?


1

আমি দেখতে পেয়েছি যে এই লাইনটি আমার উইন্ডোজ সার্ভার ২০০৮ আর 2 সার্ভারের জন্য সবচেয়ে ভাল কাজ করেছে । আমার পাওয়ারশেল স্ক্রিপ্টগুলিতে এই লাইনটি ছাড়া অন্য কয়েকজনের সমস্যা নেই:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process

1

প্রশাসক হিসাবে পাওয়ারশেল কনসোলটি খুলুন এবং তারপরে কার্যকরকরণের নীতি সেট করুন

Set-ExecutionPolicy -ExecutionPolicy Remotesigned 

0

এটিকে বাইপাস করার জন্য আপনি একটি বিশেষ উপায় ব্যবহার করতে পারেন:

Get-Content "PS1scriptfullpath.ps1" | Powershell-NoProfile -

এটি পাওয়ারশেল স্ক্রিপ্টের বিষয়বস্তুকে পাওয়ারশেল.এক্সপিতে পাইপ করে এবং সম্পাদন নীতিকে বাইপাস করে কার্যকর করে।


0

এটি আমার সমস্যা সমাধান করেছে

উইন্ডোজ PowerShellকমান্ড খুলুন এবং পরিবর্তনের জন্য ক্যোয়ারির নীচে চালানExecutionPolicy

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

যদি এটি নিশ্চিতকরণের জন্য জিজ্ঞাসা করে 'Y' চাপুন এবং এন্টার টিপুন।



0
  1. প্রশাসন হিসাবে ওপেন পাওয়ারশেল
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

এই আদেশ ব্যবহার করুন



-2

প্রশাসক হিসাবে পাওয়ারশেল উইন্ডোটি খুলুন । এটা কাজ করবে।


এটি কাজ করে না। তবে, পাওয়ারশেল সেট-এক্সিকিউশনপলিসি রিমোটসাইনড চলমান কাজ করে।
সমুহ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.