පවර්ෂෙල් ස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීම සක්‍රීය කරන්නේ කෙසේද?


318

මගේ පවර්ෂෙල් ස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීමට උත්සාහ කරන විට මට මෙම දෝෂය ඇතිවේ:

ගොනුව C: \ පොදු \ ස්ක්‍රිප්ට් \ hello.ps1 පූරණය කළ නොහැක්කේ මෙම පද්ධතිය තුළ ස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීම අක්‍රීය කර ඇති බැවිනි. වැඩි විස්තර සඳහා කරුණාකර "get-help about_signing" බලන්න.
පේළියේ: 1 char: 13
+. \ Hello.ps1 <<<<
+ CategoryInfo: NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId: RuntimeException

Answers:


471
  1. වින්ඩෝස් පවර්ෂෙල් "පරිපාලක ලෙස ධාවනය කරන්න" විකල්පය සමඟ ආරම්භ කරන්න. ක්‍රියාත්මක කිරීමේ ප්‍රතිපත්තිය වෙනස් කළ හැක්කේ පරිගණකයේ පරිපාලක කණ්ඩායමේ සාමාජිකයින්ට පමණි.

  2. ඇතුළත් කිරීමෙන් අත්සන් නොකළ ස්ක්‍රිප්ට් ධාවනය සක්‍රීය කරන්න:

    set-executionpolicy remotesigned
    

මෙය ඔබගේ දේශීය පරිගණකයේ ලියන අත්සන් නොකළ ස්ක්‍රිප්ට් සහ අන්තර්ජාලයෙන් අත්සන් කළ ස්ක්‍රිප්ට් ධාවනය කිරීමට ඉඩ දෙයි.

මයික්‍රොසොෆ්ට් ටෙක්නෙට් පුස්තකාලයේ ධාවනය වන ස්ක්‍රිප්ට් ද බලන්න .


3
මෙය ප්‍රතිපත්තිය ස්ථිරවම වෙනස් කරයිද නැතහොත් මගේ පරිගණකය නැවත ආරම්භ කරන සෑම අවස්ථාවකම මෙය කළ යුතුද?
රේ

3
AyRay මෙය ප්‍රතිපත්තිය ස්ථිරවම වෙනස් කරයි.
පවෙල් චුචුවා

1
බලන්න @Ray ලේඛගතකිරීම . පෙරනිමියෙන්, එය එය සඳහා සකසයි LocalMachine. වෙනත් විෂය පථයන් සඳහා ( CurrentUserහෝ Process) සැකසීමට , -Scopeපැහැදිලිව සමත් වන්න .
jpmc26

APavelChuchuva ඔබ අදහස් කළ මගේ පිටපතට ඉහළින් මෙම පේළිය එක් කළ යුතුද
FabioSpaghetti

1
සාමාන්‍ය බල කවචයකින් දෙවරක් ඔබ එය කළ යුතු බව මම සඳහන් කරමි. නැවත වරක් Windows PowerShell (x86)එය ඉතා අනපේක්ෂිත නමුත් 2 ට වෙනස් ප්‍රතිපත්ති මාලාවක් ඇත.
සූන්ට්ස්

97

පෙරනිමි ක්‍රියාත්මක කිරීමේ ප්‍රතිපත්තිය සීමා කර ඇත, ඔබට එය ටයිප් කිරීමෙන් දැකිය හැකිය:

Get-ExecutionPolicy

එය සීමා රහිත මාදිලියකට යාමට ඔබ පහත සඳහන් දේ ටයිප් කළ යුතුය:

Set-ExecutionPolicy unrestricted

මෙය උපකාරී වේ යැයි සිතමි


16
පරිශීලකයා අනිෂ්ට ස්ක්‍රිප්ට් අන්තර්ජාලයෙන් පිටපත් කර අලවනු ඇතැයි ඔබ අපේක්ෂා කරන්නේ නම් අත්සන් කිරීම අවශ්‍ය වේ. පරිශීලකයා මෝඩ නැතැයි ඔබ සිතන්නේ නම්, "දුරස්ථව" කිසිදු ආරක්ෂාවක් එක් නොකරන අතර ජීවිතය දුෂ්කර කරයි.
ගුස්

1
Us ගුස්: මෙය පරීක්ෂා කිරීමේදී දුරස්ථ අත්සන් කිරීම සඳහා තවදුරටත් දේශීයව ජනනය කරන ලද .ps1 ගොනු අත්සන් කිරීම අවශ්‍ය නොවන බව මට පෙනී ගිය අතර එය git ප්‍රභව පාලනය දේශීය ප්‍රභවයක් ලෙස සලකයි.
යෝෂුවා

Os ජෝෂුවා - ඔව්, මගේ අදහස හරියටම. නම් RemoteSignedපිටපතක් අවහිර සහ ඇලවීම නැහැ, GIT නොවන හෝ IE බාගත ක්රම අවහිර නැත, එසේ නම් කුමක්ද ඒ සඳහා හොඳ ද? මා සමඟ එය කියන්න: "නියත වශයෙන්ම කිසිවක් නැත!". ඩොලර් 100 කේත අත්සන් කිරීමේ සහතිකයක් සමඟ ස්ක්‍රිප්ට් අත්සන් කිරීම නිෂ් less ල, මෝඩ සහ වින්ඩෝස් සඳහා හොඳ ස්ක්‍රිප්ටින් භාෂාවකට කළ හැකි සියලු යහපත් දේ ප්‍රතික්ෂේප කරයි. එසේ පැවසුවහොත්, පීඑස් ස්ක්‍රිප්ට් භාවිතා කිරීම සඳහා පරිශීලකයින් කරන්නේ කුමක්ද යන්න අවබෝධ කර ගැනීම ඉදිරි මාවත නම්, අපි ද දැඩි ලෙස සිටිය හැකිය ... නහ්හ්, එය කිසි විටෙකත් ක්‍රියාත්මක නොවනු ඇත ;-)
ගුස්

Us ගුස්: මට දැනටමත් වින්ඩෝස් හි හොඳ ස්ක්‍රිප්ටින් භාෂාවක් තිබේ. සිග්වින් වින්ඩෝස් 10 හි විශිෂ්ට ලෙස ක්‍රියා කරයි; වින්ඩෝස් හි ඕනෑම පෙර අනුවාදයකට වඩා වචනාර්ථයෙන් වඩා හොඳය. මට කවදා හෝ අවශ්‍ය වී ඇත්තේ වෙනත් අයෙකු දැනටමත් ලියා ඇති පිටපත් ධාවනය කිරීමට පමණි.
යෝෂුවා

66

ඩිව් ස්ක්‍රිප්ට් සඳහා මා භාවිතා කරන මගේ යන්ත්‍රයේ, මම ඉහත පරිදි සීමා රහිතව භාවිතා කරමි. කෙසේ වෙතත්, මගේ ස්ක්‍රිප්ට් අවසාන පරිශීලක යන්ත්‍රයකට යෙදවීමේදී, මම බලශක්තිය අමතන්නේ -executionpolicy ස්විචය සමඟ ය:

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

2
.CMD ගොනුවක බහු අවයවික උපක්‍රමයක් සමඟ මෙම උපක්‍රමය ඒකාබද්ධ කිරීමට ඔබට අවශ්‍ය විය හැකිය. Stackoverflow.com/a/8597794/5314
ජේ බසුසි

හොඳයි! මම sfx නිපදවා ඇත්තේ winrar rarlabs.com
MDMoore313

1
එම උපක්‍රමය මට Git Bash (MINGW32 bash) වෙතින් පවර්ෂෙල් ස්ක්‍රිප්ට් ධාවනය කිරීමට ඉඩ ලබා දුන්නේය
Kamil Szot

23

පහත දැක්වෙන විධානය මඟින් අපට වත්මන් ExecutionPolicy හි තත්වය ලබා ගත හැකිය:

Get-ExecutionPolicy;

පෙරනිමියෙන් එය සීමා කර ඇත. අපි එක්කෝ මෙම ExecutionPolicy සකස් කර ගැනීමට අවශ්ය PowerShell ස්ක්රිප්ට් ඝාතනය ඉඩ වාරණයන් හෝ නිර්බාධිත .

පහත දැක්වෙන පවර්ෂෙල් විධානයක් භාවිතා කිරීමෙන් Bypassහෝ වර්තමාන පරිශීලකයා සඳහා අපට ප්‍රතිපත්තිය සැකසිය හැකිය Unrestricted:

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

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

සීමා රහිත ප්‍රතිපත්තිය මඟින් සියලු වින්‍යාස ගොනු පටවන අතර සියලු ස්ක්‍රිප්ට් ක්‍රියාත්මක වේ. ඔබ අත්සන් නොකළ ස්ක්‍රිප්ට් එකක් අන්තර්ජාලයෙන් බාගත කර ඇත්නම්, එය ක්‍රියාත්මක වීමට පෙර අවසර ඉල්ලා සිටිනු ඇත.

දශකවලදී වාරණයන් ප්රතිපත්තිය, කිසිවක් අවහිර වන අතර තිර රචනය සම්පාදනය තුලදී කිසිදු අනතුරු ඇඟවීම් හෝ ලබාදෙන විමසුම් ඇත. බයිපාස් ක්‍රියාත්මක කිරීම අසීමිත ලෙසට වඩා පොලිසි ලිහිල් වේ.


6

වින්ඩෝස් අනුවාදය සහ වින්‍යාසය මත පදනම්ව, ඔබට පහත දැක්වෙන අනතුරු ඇඟවීම තිබිය හැකිය 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

සිට ප්රලේඛනය :

බයිපාස්: කිසිවක් අවහිර කර නැති අතර අනතුරු ඇඟවීම් හෝ විමසීම් නොමැත.

මෙය පැහැදිලිවම අනාරක්ෂිත ය, කරුණාකර ඇති අවදානම් තේරුම් ගන්න.


මගේ තිර රචනය පවර්ෂෙල් 2.0 සහිත වයින් පරිසරයක ධාවනය කිරීමට මට හැකි වූ එකම ක්‍රමය මෙයයි. ඔබට ස්තුතියි.
Wyatt8740

Y Wyatt8740: වයින් සියළුම ධාවක ජාල ධාවක ලෙස ඉදිරිපත් කරන බැවිනි.
යෝෂුවා

@ ජෝෂුවා මට කිසිම අදහසක් තිබුණේ නැහැ. ඔබට එම ප්‍රකාශය සඳහා ප්‍රභවයක් ලබා දිය හැකිද? මම අනියම් ගූගල් එකක් උත්සාහ කළෙමි, නමුත් මම පැහැදිලිවම වැරදියි.
Wyatt8740

Y Wyatt8740: මූලාශ්‍රය: වයින් OpenFileName පොදු සංවාද කොටුව. ඩ්‍රයිව් අයිකන බලන්න.
යෝෂුවා

Os ජෝෂුවා මම අදහස් කළේ ප්‍රභව කේත ප්‍රභවයක්; අයිකන අත්තනෝමතික විය හැකිය. නමුත් මම ඒ ගැන සිතුවේ නැහැ. මම හිතන්නේ එය ආරම්භ කිරීමට හොඳ ස්ථානයක් (සංස්කරණය: ඔවුන් මෙහි සිටින බවක් නොපෙනේ .)
Wyatt8740

4

සමඟ .reg ගොනුවක්:

Windows Registry Editor Version 5.00

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

හා:

Windows Registry Editor Version 5.00

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

ඇත්තෙන්ම වැඩ කරයි.


2

පිළිගත් පිළිතුර හරි, නමුත් ප්‍රතිපත්ති වෙනස් කිරීම ලබා ගත හැක්කේ දැනට ක්‍රියාත්මක වන පවර්ෂෙල් සඳහා පමණි, එයින් අදහස් වන්නේ පවර්ෂෙල් හි අවස්ථාව වසා දැමූ පසු ය. ප්‍රතිපත්තිය නැවත සැකසෙනු ඇත. පරිශීලකයෙකු පවර්ෂෙල් හි තවත් අවස්ථාවක් නැවත විවෘත කරන්නේ නම්, පෙරනිමි ප්‍රතිපත්තිය ක්‍රියාත්මක වේRestricted

මට නම්, දේවල් තැනීම සඳහා සිග්වින් වෙතින් විෂුවල්ස්ටූඩියෝ කේත කොන්සෝලය සහ g ++ භාවිතා කළ යුතුය. කොන්සෝලය පවර්ෂෙල් භාවිතා කරයි, පෙරනිමි ප්‍රතිපත්තිය සමඟ කිසිවක් කළ නොහැක. එක් විසඳුමක් නම් විෂුවල්ස්ටූඩියෝ කේත කොන්සෝලය තුළ කොන්සෝලය ක්‍රියාත්මක වන සෑම අවස්ථාවකම ප්‍රතිපත්තිය වෙනස් කිරීමයි, සමහර විට ප්‍රතිපත්තිය වෙනස් කිරීමේ පිටපතක් විය හැකිය.

මම කම්මැලි, එබැවින් තවත් විසඳුමක් වන්නේ මම පවර්ෂෙල් පරිපාලක මාදිලියේ ධාවනය කරන විට පිළිගත් පිළිතුරට සමාන වේ. නමුත් රෙජිස්ට්‍රි වගුවේ අගයන් වෙනස් කරන අතිරේක පරාමිතියක් සමඟ. එය කළ පසු. පවර්ෂෙල් හි වෙනත් අවස්ථා RemoteSignedපෙරනිමියෙන් ප්‍රතිපත්තිය භාවිතා කරනු ඇත.

set-executionpolicy remotesigned -Scope CurrentUser


1

කිසියම් හේතුවක් නිසා PowerShell cmdlet මගින් දේශීය පරිශීලකයින්ගේ සන්දර්භය සඳහා පමණක් ගෝලීයව ක්‍රියාත්මක කිරීමට නොහැකි විය. මම සිග්වින්ගේ බැෂ් විමසුමේ සිට පවර්ෂෙල් ස්ක්‍රිප්ට් එකක් ආරම්භ කිරීමට උත්සාහ කළහොත්, උදාහරණයක් ලෙස, එය තමන්ගේම පරිශීලක සන්දර්භය යටතේ ක්‍රියාත්මක වේ නම්, එය ක්‍රියාත්මක නොවනු ඇත, “ඩිජිටල් ලෙස අත්සන් කර නැත” දෝෂය ලබා දෙමින්. පිළිතුර වූයේ ප්‍රාදේශීය කණ්ඩායම් ප්‍රතිපත්ති සංස්කාරක -> දේශීය පරිගණක ප්‍රතිපත්තිය -> පරිපාලන සැකිලි -> වින්ඩෝස් සංරචක -> වින්ඩෝස් පවර්ෂෙල් වෙත ගොස් 'ස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීම සක්‍රිය කරන්න' මත දෙවරක් ක්ලික් කරන්න. මෙමඟින් එය 'සක්‍රීය' ලෙස වෙනස් කර "දේශීය ස්ක්‍රිප්ට් සහ දුරස්ථ අත්සන් කළ ස්ක්‍රිප්ට් වලට ඉඩ දෙන්න" යන ප්‍රතිපත්තිය ක්‍රියාත්මක කර පරිශීලක සන්දර්භය නොසලකා එය ගෝලීයව ක්‍රියාත්මක වීමට ඉඩ දෙන්න.


1

ප්‍රතිපත්තිය සැකසීම (නිවැරදිව) හොඳම තේරීම වන නමුත් මගේ කළමනාකරණ පද්ධතිවල එම ප්‍රතිපත්තිය වෙනස් කිරීමේ හැකියාවක් මට නැත.

මට නම්, ප්‍රතිපත්තිය වෙනස් කිරීම සඳහා කළ හැකි සරලම දෙය නම් “පවර්ෂෙල් අයිඑස්ඊ” හි ස්ක්‍රිප්ට් විවෘත කිරීම, ක්‍රියාත්මක කිරීම සඳහා කේතය (හෝ කේතයේ කොටසක්) ඉස්මතු කර ඉන්පසු “තේරීම ධාවනය කරන්න” බොත්තම ක්ලික් කරන්න (නැතහොත් F8 භාවිතා කරන්න) කෙටිමං).

මෙය හොඳම විසඳුම නොවන අතර කාර්යයන් ස්වයංක්‍රීය කිරීම සඳහා එතරම් දෙයක් නොකරයි, නමුත් එය මගේ අයිඑස් දෙපාර්තමේන්තුවෙන් පිටතට නොයන අතරම පවර්ෂෙල් භාවිතා කිරීමට සහ උපයෝගී කර ගැනීමට ඉඩ සලසයි.


0
  1. ආරම්භය විවෘත කරන්න.

  2. පවර්ෂෙල් සඳහා සොයන්න, ඉහළ ප්‍රති result ලය මත දකුණු-ක්ලික් කර Run as පරිපාලක විකල්පය ක්ලික් කරන්න.

  3. ස්ක්‍රිප්ට් ධාවනය කිරීමට ඉඩ දීම සඳහා පහත විධානය ටයිප් කර Enter යතුර ඔබන්න:

    Set-ExecutionPolicy RemoteSigned
    
  4. A ටයිප් කර Enter ඔබන්න (අදාළ නම්).

  5. ස්ක්‍රිප්ට් ධාවනය කිරීමට පහත විධානය ටයිප් කර Enter ඔබන්න:

    & "C:\PATH\TO\SCRIPT\first_script.ps1"
    

    ඉහත විධානය තුළ, "PATH \ TO \ SCRIPT" ඔබේ ස්ක්‍රිප්ටයේ ස්ථානයට වෙනස් කිරීමට වග බලා ගන්න.

ඔබ පියවර සම්පූර්ණ කළ පසු, ස්ක්‍රිප්ට් එක ක්‍රියාත්මක වන අතර එය නිවැරදිව සකසා ඇත්නම්, එහි ප්‍රතිදානය ගැටළු නොමැතිව දැකිය යුතුය.


-2

රෙග් යතුර ක්‍රියා කිරීමට හේතුව, එය PS විධාන කරන දේ හරියටම කරන බැවිනි. විධාන මඟින් රෙග් යතුරු වෙත වෙනස්කම් ලියයි. රෙගුලාසි යතුරක් සෑදීමට හෝ රෙජිස්ට්රි හෑරීමට වඩා විධාන ඉතා ඉක්මන් හා පහසුය.


2
එය වැරදියි: වෙනත් පිළිතුරු වල සඳහන් යතුරු පවර්ෂෙල් ක්‍රියාත්මක කිරීමේ ප්‍රතිපත්තිය වෙනස් කරයි, එමඟින් පවර්ෂෙල් ස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීමට හැකි වේ.
පැට්‍රික් ආර්.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.