วิธีเพิ่มสคริปต์ไปยังเส้นทาง


1

ฉันได้เก็บไว้ใช้กันทั่วไปสคริปต์ PowerShell %USERPROFILE%\Binที่ ฉันสร้างUSER_BINตัวแปรสภาพแวดล้อมซึ่งผมเพิ่มให้กับผู้ใช้ตัวแปรสภาพแวดล้อมผ่านPATHControl Panel > System and Security > System > Advanced system setting > Environment Variables

เมื่อฉันป้อนชื่อของสคริปต์ที่เก็บไว้ในBinเช่นmy-script.ps1ในคำสั่ง cmd หรือ powerhell ฉันได้รับข้อความmy-script.ps1 : The term 'my-script.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

หากฉันให้เส้นทางแบบเต็มเช่นC:\Users\Ari\Bin\my-script.ps1สคริปต์ทำงานได้ดี


โปรแกรมโหลดตัวแปร env เมื่อเริ่มต้นคุณรีสตาร์ทแอปพลิเคชันที่คุณใช้เพื่อเรียกใช้สคริปต์เหล่านั้นหรือไม่
gronostaj

@gronostaj ใช่ฉันได้เริ่มต้นแอพใหม่ซึ่งเป็นcmd.exe& powershell.exeตามลำดับ
Ari

1
วิธีว่าคุณไม่เพิ่มไปยังเส้นทาง? วิธีว่าคุณกำลังพยายามที่จะใช้พวกเขาและสิ่งที่เกิดขึ้นเมื่อคุณจะทำอย่างไร
Ƭᴇcʜιᴇ007

คำตอบ:


1

Windows เริ่มต้นเส้นทางสำหรับ CMD และ Powershell เมื่อเข้าสู่ระบบ คุณจะต้องออกจากระบบและเปิดใหม่ก่อนที่จะตรวจสอบไดเรกทอรีใหม่


ขอบคุณ แต่การออกจากระบบและเปิดใช้อีกครั้งไม่ทำงาน
Ari

0

มันเป็นคุณสมบัติด้านความปลอดภัยที่ทรงพลัง คุณสามารถเรียกใช้สคริปต์โดยใช้เส้นทางแบบสัมพันธ์หรือแบบสัมบูรณ์เท่านั้น แต่ไม่สามารถใช้ชื่อไฟล์ได้

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

เหตุผลที่อยู่เบื้องหลังการตัดสินใจครั้งนี้มีดังนี้:

เคล็ดลับหนึ่งที่ผู้ใช้ที่เป็นอันตรายมักจะพยายามในเชลล์อื่น ๆ คือการสร้างสคริปต์ที่มีชื่อไฟล์เดียวกับคำสั่งในตัว ตัวอย่างเช่นหากคุณต้องการให้ผู้ใช้เรียกใช้สคริปต์ของคุณคุณอาจตั้งชื่อเป็น Dir.ps1 และวางลงในโฟลเดอร์ หากคุณโน้มน้าวให้ผู้ใช้พิมพ์ Dir และกด Enter สคริปต์ของคุณสามารถทำงานได้ไม่ใช่คำสั่ง Dir ที่ผู้ใช้คาดหวัง เทคนิคนี้เรียกว่าคำสั่งหักหลัง ใน Windows PowerShell คุณต้องระบุพา ธ ไปยังสคริปต์ดังกล่าวเสมอทำให้ Windows PowerShell ได้รับการปกป้องจากคำสั่งไฮแจ็ค การเรียกใช้ demo1 ไม่ทำงานเนื่องจากไม่มีเส้นทาง แต่การทำงาน. /demo1 นั้นใช้งานได้ นี่เป็นเพราะตอนนี้ฉันได้ระบุเส้นทาง - โฟลเดอร์ปัจจุบันแล้ว บรรทัดคำสั่งนั้นมีโอกาสน้อยที่จะสับสนกับคำสั่งในตัวตั้งแต่คุณ ' อย่าพิมพ์เส้นทางใด ๆ หากคุณอ้างถึงคำสั่งในตัว ดังนั้นการกำหนดพา ธ จะช่วยให้ Windows PowerShell หลีกเลี่ยงคำสั่งไฮแจ็กและความสับสนเกี่ยวกับสิ่งที่อาจเกิดขึ้นเมื่อคุณกด Enter

แหล่งที่มา: http://technet.microsoft.com/en-us/magazine/2007.09.powershell.aspx http://technet.microsoft.com/en-us/library/bb613481%28v=vs.85%29.aspx

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