পাওয়ারশেল স্ক্রিপ্টগুলির কার্যকরকরণ কীভাবে করবেন?


260

আমি যখন আমার পাওয়ারশেল স্ক্রিপ্টটি কার্যকর করার চেষ্টা করি তখন আমি এই ত্রুটিটি পাই:

সি সি: \ প্রচলিত crip স্ক্রিপ্টগুলি \ হ্যালো.ps1 লোড করা যায় না কারণ এই সিস্টেমে স্ক্রিপ্টগুলির সম্পাদন অক্ষম করা আছে। আরও তথ্যের জন্য দয়া করে "get-help about_signing" দেখুন।
লাইনে: 1 গৃহস্থালির কাজ: 13
+ + \ hello.ps1 <<<<।
+ + CategoryInfo: NotSpecified: (:) [], PSSecurityException
+ + FullyQualifiedErrorId: RuntimeException

উত্তর:


399
  1. "অ্যাডমিনিস্ট্রেটর হিসাবে চালান" বিকল্পের সাহায্যে উইন্ডোজ পাওয়ারশেল শুরু করুন। কম্পিউটারে কেবল প্রশাসক গোষ্ঠীর সদস্যগণ কার্যকর করার নীতি পরিবর্তন করতে পারেন।

  2. প্রবেশ করে স্বাক্ষরবিহীন স্ক্রিপ্টগুলি সক্ষম করুন:

    set-executionpolicy remotesigned
    

এটি আপনার স্থানীয় কম্পিউটারে স্বাক্ষরযুক্ত স্বাক্ষরিত স্ক্রিপ্টগুলি এবং ইন্টারনেট থেকে স্বাক্ষরিত স্ক্রিপ্টগুলি পরিচালনা করার অনুমতি দেবে।

মাইক্রোসফ্ট টেকনেট লাইব্রেরিতে স্ক্রিপ্টগুলি চালনা দেখুন ।


3
এটি কি নীতিটি স্থায়ীভাবে পরিবর্তন করবে বা প্রতিবার আমার কম্পিউটার পুনঃসূচনা করার সময় আমাকে কি এটি করতে হবে?
রায়

1
@ রায় এটি স্থায়ীভাবে নীতি পরিবর্তন করবে।
পাভেল চুচুভা

1
@ রায় ডকুমেন্টেশন দেখুন । ডিফল্টরূপে, এটি এটির জন্য সেট করে LocalMachine। অন্যান্য স্কোপের ( CurrentUserবা Process) জন্য সেট করতে , -Scopeস্পষ্টভাবে পাস করুন ।
jpmc26

@ পাভেলচুচুয়া আমার এই লিঙ্কটি আমার স্ক্রিপ্টের উপরে যুক্ত করা উচিত যা আপনি বোঝাতে চেয়েছিলেন
ফ্যাবিওস্পাগেটি

@ ফ্যাবিওস্প্যাগেটি আপনার স্ক্রিপ্টগুলিতে কিছু যুক্ত করার দরকার নেই। পদক্ষেপগুলি অনুসরণ করে একবার এই আদেশটি কার্যকর করুন।
পাভেল চুচুভা

74

ডিফল্ট এক্সিকিউশন নীতিটি সীমাবদ্ধতে সেট করা হয়েছে, আপনি এটি টাইপ করে দেখতে পারেন:

Get-ExecutionPolicy

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

Set-ExecutionPolicy unrestricted

আশাকরি এটা সাহায্য করবে


13
আপনি যদি ইন্টারনেট থেকে দূষিত স্ক্রিপ্টগুলি অনুলিপি করে আটকে রাখবেন এমন প্রত্যাশা করেন তবে প্রয়োজনীয় স্বাক্ষরটি বোধগম্য হয়। আপনি যদি ধরে নেন যে ব্যবহারকারী বোকা নয়, তবে "রিমোট ডিজাইন করা" কোনও সুরক্ষা যুক্ত করে না এবং জীবনকে কঠিন করে তোলে।
11:41

@ গুস: এটি পরীক্ষা করে আমি দেখতে পেলাম যে রিমোটসাইনডের জন্য আর স্থানীয়ভাবে উত্পাদিত .ps1 ফাইল সই করার দরকার নেই এবং এটি গিট সোর্স নিয়ন্ত্রণকে স্থানীয় উত্স হিসাবে বিবেচনা করে।
জোশুয়া

@ জোশুয়া - হ্যাঁ, আমার বক্তব্য যদি RemoteSignedঅনুলিপি এবং পেস্ট ব্লক না করে, গিট বা অন্যান্য নন- আইআই ডাউনলোড পদ্ধতি অবরুদ্ধ করে না, তবে এটি কীসের পক্ষে ভাল? এটি আমার সাথে বলুন: "একেবারে কিছুই নয়!"। আমি মনে করি $ 100 কোড স্বাক্ষরকারী শংসাপত্রের সাথে স্বাক্ষরিত স্ক্রিপ্টগুলি অকার্যকর, বোকা এবং উইন্ডোজের জন্য একটি শালীন স্ক্রিপ্টিং ভাষা যা করতে পারে তার সমস্ত উপেক্ষা করে। বলা হচ্ছে, যদি পিএস স্ক্রিপ্টগুলি ব্যবহার করার জন্য ব্যবহারকারীরা কী করছে তা বোঝার জন্য যদি এগিয়ে যাওয়ার উপায় হয়, তবে আমরা খুব বেশি চলতে পারি ... নাহহহ, এটি কখনও কাজ করবে না ;-)
গাস

@ গুস: আমি উইন্ডোজটিতে ইতিমধ্যে একটি ভাল স্ক্রিপ্টিং ভাষা পেয়েছি। সাইগউইন উইন্ডোজ 10 এ দুর্দান্ত কাজ করে; আক্ষরিক মত এটি উইন্ডোজের কোনও পূর্ববর্তী সংস্করণে চেয়ে অনেক ভাল। আমি কেবল কখনও অন্য কেউ ইতিমধ্যে লিখেছেন স্ক্রিপ চালাতে চাই।
জোশুয়া

61

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

powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1

2
আপনি এই কৌশলটি একটি .CMD ফাইলে একটি বহুগ্লুত ট্রিকের সাথে একত্রিত করতে চাইতে পারেন। দেখুন stackoverflow.com/a/8597794/5314
জে Bazuzi


1
এই কৌশলটি আমাকে গিট বাশ (এমইংডাব্লু 32 বাশ) থেকে পাওয়ারশেল স্ক্রিপ্ট চালানোর অনুমতি দেয়
কামিল জাজোট

16

আমরা নীচের কমান্ড দ্বারা বর্তমান এক্সিকিউশনপলিসির স্থিতি পেতে পারি:

Get-ExecutionPolicy;

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

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

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

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

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

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


5

উইন্ডোজ সংস্করণ এবং কনফিগারেশন উপর নির্ভর করে আপনার Unrestrictedমোডে এমনকি নিম্নলিখিত সতর্কতা থাকতে পারে :

Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this
script can potentially harm your computer. If you trust this script, use the 
Unblock-File cmdlet to allow the script to run without this warning message. 
Do you want to run?
[D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D")

সমাধানটি হ'ল "বাইপাস" নীতিটি ব্যবহার করুন যা নিম্নলিখিত কমান্ডটি সক্ষম করে:

Set-ExecutionPolicy Bypass

ডকুমেন্টেশন থেকে :

বাইপাস: কোনও কিছুই অবরুদ্ধ নয় এবং কোনও সতর্কতা বা অনুরোধ নেই।

এটি স্পষ্টতই অনিরাপদ, দয়া করে জড়িত ঝুঁকিগুলি বুঝতে পারেন understand


এই একমাত্র উপায় ছিল আমি আমার স্ক্রিপ্টটি পাওয়ার শেল ২.০ সহ একটি WINE পরিবেশে চালিত করতে সক্ষম হয়েছি। ধন্যবাদ.
Wyatt8740

@ ওয়াইট ৮৪০৪০: কারণ ওয়াইন সমস্ত ড্রাইভকে নেটওয়ার্ক ড্রাইভ হিসাবে উপস্থাপন করে।
জোশুয়া

@ জোশুয়া আমার কোন ধারণা ছিল না। আপনি কি আমাকে এই বিবৃতিটির জন্য একটি উত্স দিতে পারেন? আমি একটি নৈমিত্তিক গুগল চেষ্টা করেছি, তবে আমি অবশ্যই ভুল দেখছি।
Wyatt8740

@ ওয়াইট ৮৪০৪০: উত্স: ওয়াইন ওপেনফাইনেম সাধারণ ডায়ালগ বাক্স। ড্রাইভ আইকন দেখুন।
জোশুয়া

@ জোশুয়া আমার অর্থ একটি উত্স কোড উত্স; আইকনগুলি সম্ভবত নির্বিচারে। তবে আমি তা ভেবে দেখিনি; আমার মনে হয় এটি শুরু করার জন্য এটি একটি ভাল জায়গা (সম্পাদনা করুন: তারা এখানে আছেন বলে মনে হয় না ))
Wyatt8740

2

একটি রেজি কী এর সাথে:
উইন্ডোজ রেজিস্ট্রি সম্পাদক সংস্করণ 5.00

[এইচকেই_লোকাল_ম্যাচিন \ সফটওয়্যার \ নীতিমালা \ মাইক্রোসফ্ট, উইন্ডোজ \ পাওয়ারশেল] "সক্ষম স্ক্রিপ্টস" = শব্দ: 00000001 "এক্সিকিউশনপলিসি" = "বাইপাস"

এবং:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Unrestricted"

সত্যিই কাজ করে।


1

কোনও কারণে পাওয়ারশেল সিএমডিলেট কেবল স্থানীয় ব্যবহারকারীর প্রেক্ষাপটে বিশ্বব্যাপী স্থানীয় সম্পাদন সক্ষম করে না। যদি আমি সাইগউইনের বাশ প্রম্পটের অভ্যন্তরীণ থেকে পাওয়ারশেল স্ক্রিপ্টটি শুরু করার চেষ্টা করি, উদাহরণস্বরূপ, যা এটির নিজস্ব ব্যবহারকারীর প্রেক্ষাপটে চলে, এটি চলবে না, "ডিজিটালি স্বাক্ষরিত নয়" ত্রুটি প্রদান করে। উত্তরটি ছিল স্থানীয় গোষ্ঠী নীতি সম্পাদক -> স্থানীয় কম্পিউটার নীতি -> প্রশাসনিক টেম্পলেট -> উইন্ডোজ উপাদান -> উইন্ডোজ পাওয়ারশেল এবং 'অন স্ক্রিপ্ট এক্সিকিউশন' -তে ডাবল ক্লিক করুন। এরপরে এটি আমাকে 'সক্ষম' এবং তারপরে "স্থানীয় স্ক্রিপ্টগুলি এবং দূরবর্তী স্বাক্ষরিত স্ক্রিপ্টগুলিকে মঞ্জুরি দিন" এর কার্যকরকরণ নীতিতে পরিবর্তন করা যাক এবং ব্যবহারকারী প্রসঙ্গ নির্বিশেষে এটি বিশ্বব্যাপী কাজ করতে দেয়।


0

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

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

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

set-executionpolicy remotesigned -Scope CurrentUser


0

নীতি নির্ধারণ করা (সঠিকভাবে) সেরা পছন্দ তবে আমার পরিচালিত সিস্টেমে আমার সেই নীতি পরিবর্তন করার ক্ষমতা নেই।

আমার জন্য, নীতি পরিবর্তন করার সহজ কাজটি হ'ল "পাওয়ারশেল আইএসই" তে স্ক্রিপ্টটি খোলার জন্য , সম্পাদন করার জন্য কোডটি (বা কোডটির অংশ) হাইলাইট করুন এবং তারপরে "নির্বাচন নির্বাচন করুন" বোতামটি ক্লিক করুন (বা F8 ব্যবহার করুন) শর্টকাট)।

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


-2

রেগ কী কাজ করার কারণ, কারণ এটি পিএস কমান্ডগুলি ঠিক কী করছে। কমান্ডগুলি রেগ কীগুলিতে পরিবর্তনগুলি লিখবে। কমান্ডগুলি একটি রেজি কী তৈরি করা বা রেজিস্ট্রি খননের চেয়ে অনেক দ্রুত এবং সহজ।


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