เหตุใดสคริปต์ที่สร้างขึ้นภายในเครื่องของฉันจึงไม่ได้รับอนุญาตให้ทำงานภายใต้นโยบายการดำเนินการ RemoteSigned


98

เนื่องจากคำถามนี้ยังคงดึงดูดการตอบสนองที่ถูกหักล้างโดยเนื้อหาของคำถามหรือไม่ได้แก้ไขปัญหาที่แท้จริง โปรดอ่านข้อมูลสรุปง่ายๆที่คุณต้องรู้:

  • นี่ไม่ใช่ "ทำไมการติดตั้ง 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 จึงไม่สนใจอีกต่อไปว่าสคริปต์จะไม่ถูกเซ็นชื่อเมื่อเรียกใช้จากเครือข่ายแชร์

1
@Downvoter: สนใจที่จะให้เหตุผลว่าทำไม?
BACON

คำตอบ:


125

ไฟล์ถูกบล็อกหรือไม่? ฉันมีปัญหาเดียวกันและสามารถแก้ไขได้โดยคลิกขวาที่ไฟล์. PS1 คุณสมบัติและเลือกเลิกบล็อก


1
ดังที่ฉันได้อธิบายไปสคริปต์กำลังถูกสร้างขึ้นโดยตรงบนฮาร์ดไดรฟ์ของฉัน (ไม่ได้ดาวน์โหลดจากที่ใดก็ได้) และฉันยืนยันว่าไม่มีสตรีมทางเลือกที่ระบุว่ามาจากโซนอื่น (เช่น Internet Explorer และเว็บเบราว์เซอร์อื่น ๆ สร้าง) หากฉันเรียกใช้'Write-Host ''Hello, World!'';' > .\Test.ps1; .\Test.ps1;ฉันยังคงได้รับข้อผิดพลาดว่าสคริปต์ไม่ได้ลงนามแบบดิจิทัลและไม่ได้ดำเนินการ ถ้าฉันเปิดกล่องโต้ตอบคุณสมบัติสำหรับไฟล์ที่สร้างขึ้นใหม่จะไม่มีอะไรต้องปลดบล็อก
BACON

48
คุณหมายถึงอะไร ~ " คุณสมบัติและการเลือก Unblock "?
IgorGanapolsky

1
@IgorGanapolsky พวกเขาหมายถึงใน Explorer ค้นหาps1ไฟล์คลิกขวาเพื่อเปิดเมนูบริบทและเลือกPropertiesในแท็บแรกใกล้ด้านล่างจะมีข้อความว่าไฟล์ถูกบล็อกและอนุญาตให้คุณทำเครื่องหมายในช่องเพื่อปลดบล็อก
Lankymart

1
โปรดทราบว่าหากคุณดาวน์โหลดไฟล์ zip คุณควรปลดบล็อกไฟล์ zip ก่อนที่จะแตกไฟล์เพื่อหลีกเลี่ยงการปลดบล็อกไฟล์ทั้งหมดภายในไฟล์จำนวนมาก
Ohad Schneider

14
@Lankymart Windows 10 ลองแล้วไม่บอกว่าถูกบล็อก
Alan Baljeu

119

สิ่งที่ต้องตรวจสอบ:

คุณสามารถเปลี่ยนเป็นไม่ จำกัด ได้หรือไม่?

Set-ExecutionPolicy Unrestricted

นโยบายกลุ่มกำหนดไว้หรือไม่?

  • Computer Configuration\Administrative Templates\Windows Components\Windows PowerShell
  • User Configuration\Administrative Templates\Windows Components\Windows PowerShell

นอกจากนี้คุณเรียกใช้ Script.ps1 ได้อย่างไร

สิ่งนี้อนุญาตให้ทำงานหรือไม่

powershell.exe -executionpolicy bypass -file .\Script.ps1

ค่าดีฟอลต์สำหรับScopeพารามิเตอร์คือLocalMachineดังนั้นจึงSet-ExecutionPolicy Unrestrictedมีประสิทธิภาพเหมือนกับที่Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachineฉันได้ลองไปแล้ว ใช่นโยบายนี้จะเปิดใช้งานสำหรับ Turn on Script Execution เปิดขึ้นมาดังนั้นฉันจึงเรียกใช้ตามข้อความแจ้ง โดยใช้อัตราผลตอบแทนเส้นทางแน่นอนข้อผิดพลาดเช่นเดียวกับไม่เรียกสคริปต์ผ่าน Computer ConfigurationPowerShellC:\Users\UserName.\Desktop\Script.ps1powershell.exe
BACON

คุณได้ลองปิดใช้งานการตั้งค่านโยบายกลุ่มและรีเฟรชด้วยgpupdate /forceหรือไม่? (เปิดใช้งาน PowerShell.exe อีกครั้งหลัง)
Andy Arismendi

เป็นเวลานานในขณะที่ฉันทำงานUnrestrictedในLocalMachineขอบเขต แต่เมื่อฉันเริ่มเขียนสคริปต์ฉันต้องการเรียกใช้จากคอมพิวเตอร์เครื่องอื่นฉันตั้งค่าLocalMachineกลับไปUndefinedและเพิ่มนโยบายกลุ่มปัจจุบันเพื่อตั้งค่าRemoteSignedที่MachinePolicyขอบเขต นี่เป็นเพียงสคริปต์ทดสอบเพียงครั้งเดียวและมันไม่ใช่เรื่องใหญ่ที่จะเรียกใช้จากเครือข่ายแทนฉันแค่อยากรู้ว่าทำไมมันถึงไม่ทำงานในเครื่อง ท้ายที่สุดสคริปต์ที่สร้างขึ้นในเครื่องควรได้รับอนุญาตให้ดำเนินการภายใต้RemoteSignedใช่ไหม? ฉันแค่คิดว่าต้องมีบางอย่างที่ฉันขาดหายไปหรือไม่เข้าใจ
BACON

@BACON คุณถูกต้องเกี่ยวกับRemoteSignedการบันทึกWrite-Host hiด้วย notepad ไปยังเดสก์ท็อปของคุณควรทำงานได้ดี การกำหนดค่าของคุณก็ดูโอเคเช่นกัน ... มีบางอย่างที่ขัดข้องสำหรับฉัน ... ซึ่งเป็นสาเหตุที่ฉันแนะนำให้ลบนโยบายกลุ่มเพื่อดูว่าช่วยได้หรือไม่
Andy Arismendi

1
สำหรับการพัฒนาเราใช้-executionpolicy bypassเพื่อแก้ไขปัญหาที่ได้รับการออกแบบจากระยะไกลชั่วคราว ... และนั่นช่วยให้เราค้นพบและแก้ไขปัญหาอื่น ๆ (ไม่เกี่ยวข้องซึ่งทำให้เราต้องอัปเกรด PowerShell)
Doug_Ivison

13

ในที่สุดผมก็ติดตามลงนี้เพื่อ.NET รหัสการเข้าถึงการรักษาความปลอดภัย ฉันมีโมดูลไบนารีที่พัฒนาขึ้นภายในซึ่งจัดเก็บและดำเนินการจากเครือข่ายแชร์ ในการรับ. NET 2.0 / PowerShell 2.0 เพื่อโหลดพวกเขาฉันได้เพิ่มกฎ URL ในIntranetกลุ่มรหัสเพื่อให้เชื่อถือไดเร็กทอรีนั้น:

PS> & "$Env:SystemRoot\Microsoft.NET\Framework64\v2.0.50727\caspol.exe" -machine -listgroups
Microsoft (R) .NET Framework CasPol 2.0.50727.5420
Copyright (c) Microsoft Corporation.  All rights reserved.

Security is ON
Execution checking is ON
Policy change prompt is ON

Level = Machine

Code Groups:

1.  All code: Nothing
    1.1.  Zone - MyComputer: FullTrust
        1.1.1.  StrongName - ...: FullTrust
        1.1.2.  StrongName - ...: FullTrust
    1.2.  Zone - Intranet: LocalIntranet
        1.2.1.  All code: Same site Web
        1.2.2.  All code: Same directory FileIO - 'Read, PathDiscovery'
        1.2.3.  Url - file://Server/Share/Directory/WindowsPowerShell/Modules/*: FullTrust
    1.3.  Zone - Internet: Internet
        1.3.1.  All code: Same site Web
    1.4.  Zone - Untrusted: Nothing
    1.5.  Zone - Trusted: Internet
        1.5.1.  All code: Same site Web

โปรดทราบว่าขึ้นอยู่กับว่ามีการติดตั้ง. NET เวอร์ชันใดและเป็น Windows 32- หรือ 64 บิตcaspol.exeสามารถมีอยู่ในตำแหน่งต่อไปนี้โดยแต่ละรายการจะมีการกำหนดค่าความปลอดภัยของตนเอง ( security.config):

  • $Env:SystemRoot\Microsoft.NET\Framework\v2.0.50727\
  • $Env:SystemRoot\Microsoft.NET\Framework64\v2.0.50727\
  • $Env:SystemRoot\Microsoft.NET\Framework\v4.0.30319\
  • $Env:SystemRoot\Microsoft.NET\Framework64\v4.0.30319\

หลังจากลบกลุ่ม1.2.3....

PS> & "$Env:SystemRoot\Microsoft.NET\Framework64\v2.0.50727\caspol.exe" -machine -remgroup 1.2.3.
Microsoft (R) .NET Framework CasPol 2.0.50727.9136
Copyright (c) Microsoft Corporation.  All rights reserved.

The operation you are performing will alter security policy.
Are you sure you want to perform this operation? (yes/no)
yes
Removed code group from the Machine level.
Success

... ตอนนี้ฉันเหลือการกำหนดค่า CAS เริ่มต้นและสคริปต์โลคัลใช้งานได้อีกครั้ง จะได้รับในขณะที่ตั้งแต่ผมเคยซ่อม CAS และผมไม่แน่ใจว่าทำไมกฎของฉันดูเหมือนจะยุ่งเกี่ยวกับการอนุญาตให้ผู้ที่FullTrustไปMyComputerแต่เนื่องจากCAS จะเลิกเป็นของ .NET 4.0 (ซึ่ง PowerShell 3.0 จะขึ้นอยู่) ผม เดาว่าตอนนี้เป็นจุดที่สงสัย


คุณเพิ่มกฎ URL ได้อย่างไร ฉันมีปัญหาเดียวกันและหวังว่าสิ่งนี้จะช่วยฉันแก้ไขได้ ขอบคุณ.
OptimusPrime

เป็นเวลานานมากแล้วที่ฉันได้ทำงานด้วยcaspol.exeแต่หลังจากทำงานcaspol.exe -machine -addgroup 1.2 -url file://Server/Share/Directory/WindowsPowerShell/Modules/* FullTrustฉันก็จบลงด้วย1.2.3.กฎเดียวกันที่เห็นในคำตอบนี้ ฉันใช้file://URL เพื่ออ้างอิงไดเร็กทอรีบนการแชร์ SMB แม้ว่าฉันจะเห็นในเอกสาร-addgroup ตัวอย่างหนึ่งในตัวอย่างใช้เส้นทาง UNC
BACON

11

ฉันพบเมื่อเรียกใช้ไฟล์ PS1 สำหรับไดรฟ์ที่แมปไปยัง Dropbox ว่าฉันได้รับข้อผิดพลาดนี้เสมอ เมื่อเปิดคุณสมบัติสำหรับ PS1 จะไม่มี "Unblock"

สิ่งเดียวที่ใช้ได้ผลสำหรับฉันคือ

powershell.exe -executionpolicy บายพาส -file. \ Script.ps1


1
คุณกำลังบอกว่าสคริปต์ของคุณถูกเก็บไว้ในไดรฟ์ที่แมปกับเครือข่ายแชร์? หรือสคริปต์สร้างไดรฟ์ที่แมป? หากอดีตตามที่ระบุไว้ในเนื้อหาและชื่อของคำถามสคริปต์จะถูกสร้างและจัดเก็บไว้ในเครื่องดังนั้นจุดเริ่มต้น / โซนของสคริปต์จะไม่เป็นปัจจัย ทั้งสองวิธีการใช้Bypassนโยบายการดำเนินการได้รับการแนะนำในช่วงห้าปีที่ผ่านมาและเมื่อเร็ว ๆ นี้ห้าเดือนที่ผ่านมา โปรดอ่านคำถามและคำตอบที่มีอยู่ก่อนตอบ
BACON

6

หากไฟล์ถูกคัดลอกจากตำแหน่งเครือข่ายนั่นคือคอมพิวเตอร์เครื่องอื่น Windows อาจบล็อกไฟล์นั้น คลิกขวาที่ไฟล์และคลิกที่ปุ่มปลดบล็อกและดูว่าใช้งานได้หรือไม่


2
ตามที่ฉันอธิบายทั้งในคำถามและความคิดเห็นของฉันเกี่ยวกับคำตอบของ @ O-Dogg สคริปต์ถูกสร้างขึ้นโดยตรงบนฮาร์ดไดรฟ์ของฉัน (ไม่ได้ดาวน์โหลดจากที่ใดก็ได้) และฉันยืนยันว่าไม่มีสตรีมสำรองที่ระบุว่ามาจากโซนอื่น (เช่น Internet Explorer และเว็บเบราว์เซอร์อื่น ๆ สร้าง) หากฉันรัน'Write-Host ''Hello, World!'';' > .\Test.ps1; .\Test.ps1;ฉันยังคงพบข้อผิดพลาดที่ว่าสคริปต์ไม่ได้ลงนามแบบดิจิทัลและไม่ได้ดำเนินการ หากฉันเปิดกล่องโต้ตอบคุณสมบัติสำหรับไฟล์ที่สร้างขึ้นใหม่จะไม่มีอะไรต้องปลดบล็อก
BACON

ควรตรวจสอบว่าคุณไม่ได้สร้างและเรียกใช้งานบนไดรฟ์ที่แมป บนเซิร์ฟเวอร์ของเราตัวอย่างเช่นโฮมโฟลเดอร์สำหรับผู้ใช้แต่ละคนคือไดรฟ์ที่แมปไปยังโฟลเดอร์ส่วนตัวของพวกเขา
Caltor

0

นี่คือปัญหา IDE เปลี่ยนการตั้งค่าใน PowerShell GUI ไปที่เครื่องมือและเลือกตัวเลือกแล้วตัวเลือกการแก้จุดบกพร่อง จากนั้นตรวจสอบกล่องปิดข้อกำหนดสำหรับสคริปต์จะต้องลงนาม เสร็จแล้ว


OP ไม่ต้องการให้สคริปต์ทำงานโดยไม่ได้ลงนามและไม่ได้อ้างถึง IDE
kfsone

1
ไม่มีใน Powershell ISE
Josh Noe

0

สิ่งที่เหมาะกับฉันคือคลิกขวาที่ไฟล์. ps1 จากนั้นคุณสมบัติ คลิกปุ่ม "UNBLOCK" ใช้งานได้ดีมากหลังจากใช้เวลาหลายชั่วโมงในการพยายามเปลี่ยนนโยบาย


1
มีคำตอบสองคำตอบที่เพิกเฉยต่อสิ่งที่ระบุไว้ในคำถามและแนะนำวิธีแก้ปัญหาที่ไม่สามารถใช้งานได้แบบเดียวกัน ฉันเขียนไว้ชัดเจนมากว่า "ฉัน ... ใช้ยูทิลิตี้สตรีมของ Sysinternals และกล่องโต้ตอบคุณสมบัติของไฟล์เพื่อยืนยันว่าสคริปต์ไม่ได้รับการปฏิบัติว่ามาจากอินเทอร์เน็ต" จากนั้นจึง "สร้างและดำเนินการในเครื่อง" มันยังบอกในชื่อเรื่องว่าสคริปต์ "สร้างขึ้นในท้องถิ่น" ไม่มีอะไรต้องปลดบล็อก หากการยกเลิกการปิดกั้นสคริปต์ของคุณสามารถแก้ไขปัญหาของคุณได้แสดงว่าคุณไม่มีปัญหาเดียวกันกับที่ฉันมีเพราะตามที่ระบุไว้สคริปต์ของฉันไม่ถูกบล็อก -1.
BACON

1
@BACON เพื่อความเป็นธรรมฉันมีอาการเดียวกันกับที่คุณทำและสำหรับฉันการปลดบล็อกได้ผล แม้แต่คิดว่าสคริปต์ของฉันถูกสร้างขึ้นในเครื่องฉันต้องปลดบล็อกทุกครั้งหลังจากบันทึกแล้ว
SQB

นี่อาจเป็นวิธีแก้ปัญหา แต่ไม่ใช่วิธีแก้ปัญหาที่ถูกต้อง
Mo Zaatar

0

โปรดทำการสำรองข้อมูลสำหรับไฟล์ script.bs1

สิ่งที่ใช้ได้ผลสำหรับฉันคือการลบไฟล์ script.bs1 และเรียกใช้คำสั่งการดำเนินการ


1
ข้อความแสดงข้อผิดพลาดที่คุณได้รับคืออะไรซึ่งได้รับการแก้ไขโดยการทำเช่นนี้
BACON

ฉันผ่านข้อผิดพลาดนี้ไปแล้ว 2 ครั้งและแก้ไขด้วยวิธีเดียวกัน ดูเหมือนว่าการเรียกใช้คำสั่งการดำเนินการจาก CMD จะทำงานทันทีกับไฟล์อื่นที่มีชื่อเดียวกัน แต่มีนามสกุล (.cmd)
Simple Abstraction

ไม่สามารถโหลดไฟล์ C: \ Users \ UserName \ Desktop \ Script.ps1 ไฟล์ C: \ Users \ UserName \ Desktop \ Script.ps1 ไม่ได้ลงนามแบบดิจิทัล สคริปต์จะไม่ทำงานบนระบบ ((Script.ps1 ไม่ได้ลงนามข้อผิดพลาดแบบดิจิทัล))
Simple Abstraction

ฉันเห็น. และสิ่งที่คืนกลับมาเมื่อคุณเรียกใช้Get-ExecutionPolicy -List?
BACON

MachinePolicy AllSigned, UserPolicy Undefined, Process Undefined, CurrentUser RemoteSigned, LocalMachine Bypass
Simple Abstraction

-1

เลือกพรอมต์คำสั่งเทอร์มินัลของคุณแทน Power shell ที่ควรจะทำงาน


2
นี่หมายความว่าอย่างไร? เลือกที่ไหน เป้าหมายคือการเรียกใช้สคริปต์ PowerShell ใน PowerShell ดังนั้นการใช้สิ่งอื่นที่ไม่ใช่ PowerShell จะไม่ได้ผล
BACON

-1

เมื่อคุณเรียกใช้สคริปต์. ps1 PowerShell คุณอาจได้รับข้อความว่า“ .ps1 ไม่ได้ลงนามแบบดิจิทัล สคริปต์จะไม่ทำงานบนระบบ” ในการแก้ไขคุณต้องรันคำสั่งด้านล่างเพื่อเรียกใช้ Set-ExecutionPolicy และเปลี่ยนการตั้งค่านโยบายการดำเนินการ

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

คำตอบอื่นแนะนำให้ใช้Bypassนโยบายการดำเนินการแล้ว การใช้นโยบายอื่นไม่เป็นประโยชน์ แต่อย่างใดและไม่ได้แก้ไขปัญหาที่แท้จริงหากRemoteSignedเป็นสิ่งที่จำเป็นจริงๆ สุดท้ายข้อความแสดงข้อผิดพลาดที่คุณอ้างถึงไม่ใช่ข้อความเดียวกับในคำถาม
BACON

-2

ฉันมีปัญหาเดียวกันและแก้ไขโดยเปลี่ยนโปรแกรมเริ่มต้นเพื่อเปิดไฟล์. ps1 เป็น PowerShell มันถูกกำหนดให้Notepad


คุณมีปัญหาเดียวกันนี้หรือไม่? หรือเมื่อคุณคลิกสองครั้งที่.ps1ไฟล์ที่เปิดใน Notepad แทนที่จะเรียกใช้สคริปต์ใน PowerShell?
BACON

-2

ลองเรียกใช้ Powershell GUI ในฐานะผู้ดูแลระบบ


3
ตามที่ระบุไว้ในคำถาม, I am both a domain administrator and a local administrator. การเรียกใช้ PowerShell แบบยกระดับจะไม่สร้างความแตกต่างเนื่องจากสคริปต์ได้รับอนุญาตให้ทำงานโดยไม่ยกระดับเมื่อเก็บไว้ในเครือข่ายที่ใช้ร่วมกัน
BACON

-4

เรียกใช้คำสั่งด้านล่าง 2 คำสั่งในหน้าต่าง PowerShell

  1. Set-ExecutionPolicy ไม่ จำกัด

  2. เลิกบล็อกไฟล์ - เส้นทาง D: \ PowerShell \ Script.ps1


2
เห็นได้ชัดว่าคุณไม่ได้อ่านคำถามหรือคำตอบอื่น ๆ ที่เสนอรูปแบบของวิธีแก้ปัญหาที่ไม่เหมาะสมแบบเดียวกันนี้หรือความคิดเห็นของฉันที่ระบุครั้งแล้วครั้งเล่าว่านี่ไม่ใช่คำตอบ ฉันจะ -10 นี่ถ้าทำได้ แต่ฉันจะต้องจ่าย -1 แทน
BACON
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.