เนื่องจากคำถามนี้ยังคงดึงดูดการตอบสนองที่ถูกหักล้างโดยเนื้อหาของคำถามหรือไม่ได้แก้ไขปัญหาที่แท้จริง โปรดอ่านข้อมูลสรุปง่ายๆที่คุณต้องรู้:
- นี่ไม่ใช่ "ทำไมการติดตั้ง PowerShell เริ่มต้นของฉันจึงไม่เรียกใช้สคริปต์" คำถาม.
- นี่ไม่ใช่ "ทำไมการติดตั้ง PowerShell ของฉันจึงไม่เรียกใช้สคริปต์ที่ดาวน์โหลดจากอินเทอร์เน็ต" คำถาม.
- คำถามคือเหตุใด
RemoteSigned
นโยบายการดำเนินการจึงป้องกันการเรียกใช้สคริปต์เมื่อไม่ควรRemoteSigned
เป็นนโยบายการดำเนินการเดียวที่ฉันต้องการใช้ ฉันทราบว่ามีนโยบายที่เข้มงวดน้อยกว่าอื่น ๆ หากนโยบายเหล่านั้นเป็นสิ่งทดแทนที่ยอมรับได้ฉันจะใช้มันแทนและคำถามนี้จะไม่มีอยู่จริง- นโยบายการดำเนินการที่มีอยู่แล้ว
RemoteSigned
ตั้งค่าให้ การเปลี่ยนจากRemoteSigned
การRemoteSigned
ไม่ได้เป็นวิธีการแก้ปัญหา- ไฟล์สคริปต์ถูกสร้างและเก็บไว้ในเครื่อง
- ไฟล์สคริปต์ไม่ถูกบล็อก ไฟล์สคริปต์ไม่เคยถูกบล็อก (ดูจุดก่อนหน้า)
- ไม่สามารถเลิกบล็อกไฟล์สคริปต์ได้เนื่องจากไม่มีสิ่งใดที่ต้องปลดบล็อก (ดูจุดก่อนหน้า)
- ไฟล์สคริปต์ (พยายามที่จะ) ดำเนินการโดยผู้ดูแลระบบ
Windows PowerShell
เป็นแอปพลิเคชั่นเดียวที่เกี่ยวข้อง ไม่มีWindows PowerShell ISE
หรือCommand Prompt
เครื่องมือหรือตัวแก้ไขอื่นใดที่เกี่ยวข้อง- สาเหตุของปัญหาได้รับการระบุแล้ว (ดูคำตอบที่ยอมรับ) หลังจากผ่านไปเกือบ 8 ปีฉันคิดว่ามีการโพสต์คำอธิบายที่ชัดเจนอื่น ๆ ทั้งหมดไม่ว่าจะเกี่ยวข้องหรือไม่ก็ตาม หากคุณคิดเป็นอย่างอื่นโปรดอ่านคำถามและคำตอบที่มีอยู่ให้ครบถ้วนก่อนที่จะเพิ่มคำถามของคุณ
ฉันใช้ Windows PowerShell 2.0 บน Windows 7 Professional 64 บิต ฉันมีสคริปต์ของฉันDesktop
ที่ทำให้เกิดข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามเรียกใช้:
File C:\Users\UserName\Desktop\Script.ps1 cannot be loaded. The file C:\Users\UserName\Desktop\Script.ps1 is not digitally signed. The script will not execute on the system. Please see "get-help about_signing" for more details..
At line:1 char:54
+ C:\Users\UserName\Desktop\TestGetWindowsUpdateLog.ps1 <<<<
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException
ฉันเป็นทั้งผู้ดูแลระบบโดเมนและผู้ดูแลระบบภายในและถ้าฉันเรียกใช้Get-ExecutionPolicy -List
ฉันจะเห็นว่าสิ่งที่Group Policy Object
ฉันสร้างขึ้นเพื่อกำหนดค่า PowerShell นั้นใช้RemoteSigned
นโยบายการดำเนินการที่ระดับเครื่องอย่างถูกต้อง:
Scope ExecutionPolicy
----- ---------------
MachinePolicy RemoteSigned
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
ฉันสร้างสคริปต์ตัวเองในNotepad
และใช้Sysinternals ' streams
ยูทิลิตี้และไฟล์Properties
โต้ตอบเพื่อยืนยันว่าสคริปต์ไม่ได้รับการรักษาเป็นมาจากอินเทอร์เน็ต หากฉันคัดลอกสคริปต์ไปยังเครือข่ายแชร์บนเซิร์ฟเวอร์โดเมนก็จะได้รับอนุญาตให้ดำเนินการ หากฉันรันSet-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
สคริปต์โลคัลจะยังไม่ได้รับอนุญาตให้ดำเนินการซึ่งสมเหตุสมผลเนื่องจากนโยบายการดำเนินการที่MachinePolicy
ขอบเขตจะมีความสำคัญกว่า
เป็นเอกสารโดยabout_Execution_Policies
( ปัจจุบัน ; ในช่วงเวลาของคำถาม ) ที่RemoteSigned
นโยบายหมายถึง:
สคริปต์สามารถทำงานได้
ต้องใช้ลายเซ็นดิจิทัลจากผู้เผยแพร่ที่เชื่อถือได้บนสคริปต์และไฟล์การกำหนดค่าที่ดาวน์โหลดจากอินเทอร์เน็ต (รวมถึงอีเมลและโปรแกรมส่งข้อความโต้ตอบแบบทันที)
ไม่ต้องใช้ลายเซ็นดิจิทัลบนสคริปต์ที่คุณเรียกใช้และที่คุณเขียนบนคอมพิวเตอร์ในระบบ (ไม่ได้ดาวน์โหลดจากอินเทอร์เน็ต)
ความเสี่ยงในการเรียกใช้สคริปต์ที่ไม่ได้ลงนามจากแหล่งอื่นที่ไม่ใช่อินเทอร์เน็ตและสคริปต์ที่ลงนาม แต่เป็นอันตราย
สคริปต์ของฉันไม่ได้ลงนาม แต่เนื่องจากมีทั้งสร้างและดำเนินการในเครื่องจึงควรเป็นไปตามสัญลักษณ์แสดงหัวข้อย่อยที่สามด้านบน ดังนั้น...
- เหตุใดสคริปต์ของฉันจึงไม่ได้รับอนุญาตให้ทำงาน
- เหตุใด PowerShell จึงบ่นว่าสคริปต์ของฉัน "ไม่ได้ลงนามแบบดิจิทัล" ในเมื่อข้อกำหนดนั้นควรใช้กับไฟล์จากอินเทอร์เน็ตเท่านั้น
- เหตุใด PowerShell จึงไม่สนใจอีกต่อไปว่าสคริปต์จะไม่ถูกเซ็นชื่อเมื่อเรียกใช้จากเครือข่ายแชร์