ฉันมีปัญหาที่คล้ายกันและทำให้ฉันมีปัญหามากตั้งแต่ฉันทำโปรแกรมที่เขียนใน PowerShell (แอปพลิเคชัน GUI สำหรับผู้ใช้ปลายทาง) และฉันมีไฟล์และทรัพยากรจำนวนมากที่ฉันต้องโหลดจากดิสก์ .
เพื่อแสดงไดเรกทอรีปัจจุบันไม่น่าเชื่อถือ มันควรจะเป็นตัวแทนของไดเรกทอรีการทำงานปัจจุบัน แต่ก็มักจะไม่ ปรากฏว่า PowerShell บันทึกสถานที่จากที่ PowerShell .
ได้รับการเรียกภายใน เพื่อความแม่นยำมากขึ้นเมื่อ PowerShell เริ่มขึ้นครั้งแรกจะเริ่มต้นภายในไดเรกทอรีผู้ใช้ตามบ้านของคุณ โดยปกติจะเป็นไดเรกทอรีของบัญชีผู้ใช้ของคุณเช่นC:\USERS\YOUR USER NAME
. หลังจากนั้น PowerShell เปลี่ยนไดเรกทอรีเป็นไดเรกทอรีที่คุณเรียกใช้หรือไดเรกทอรีที่สคริปต์ที่คุณกำลังเรียกใช้อยู่ก่อนที่จะแสดงพร้อมท์ PowerShell หรือเรียกใช้สคริปต์ แต่สิ่งนี้เกิดขึ้นหลังจากแอพ PowerShell เริ่มต้นเองภายในไดเรกทอรีผู้ใช้ภายในบ้านของคุณ
และ.
แสดงถึงไดเรกทอรีเริ่มต้นภายใน PowerShell ที่เริ่มต้น ดังนั้น.
แสดงเฉพาะไดเรกทอรีปัจจุบันในกรณีที่คุณเรียกใช้ PowerShell จากไดเรกทอรีที่ต้องการ หากคุณเปลี่ยนไดเรกทอรีในรหัส PowerShell ในภายหลังการเปลี่ยนแปลงจะไม่ปรากฏ.
ในทุกกรณี ในบางกรณี.
หมายถึงไดเรกทอรีการทำงานปัจจุบันและในไดเรกทอรีอื่นที่ PowerShell (ตัวเองไม่ใช่สคริปต์) ถูกเรียกสิ่งที่สามารถนำไปสู่ผลลัพธ์ที่ไม่สอดคล้องกัน ด้วยเหตุนี้ฉันจึงใช้สคริปต์ตัวเรียกใช้ สคริปต์ PowerShell ด้วยคำสั่งเดียวภายใน:
แสดงถึงไดเรกทอรีปัจจุบัน แต่จะใช้งานได้หากคุณไม่เปลี่ยนไดเรกทอรีในภายหลังในรหัส PowerShell ในกรณีของสคริปต์ฉันใช้ Invoker script ซึ่งคล้ายกับสคริปต์ล่าสุดที่ฉันพูดถึงยกเว้นมีตัวเลือกไฟล์:
POWERSHELL
สคริปต์ที่มีอยู่ภายในคำสั่งเดียว: ที่จะให้แน่ใจว่า PowerShell ถูกเรียกใช้จากไดเรกทอรีที่ต้องการและทำให้.
POWERSHELL -FILE DRIVE:\PATH\SCRIPT NAME.PS1
ในกรณีของสคริปต์ผมใช้ทรงสคริปต์ซึ่งคล้ายกับคนสุดท้ายที่ผมกล่าวถึงยกเว้นว่ามันจะมีตัวเลือกไฟล์:เพื่อให้แน่ใจว่า PowerShell เริ่มต้นภายในไดเรกทอรีการทำงานปัจจุบัน
เพียงคลิกที่สคริปต์จะเรียกใช้ PowerShell จากไดเรกทอรีผู้ใช้ตามบ้านของคุณไม่ว่าสคริปต์จะอยู่ที่ใด มันเป็นผลมาจากไดเรกทอรีการทำงานปัจจุบันเป็นไดเรกทอรีที่สคริปต์ตั้งอยู่ แต่กำลังร้องขอไดเรกทอรี PowerShellC:\USERS\YOUR USER NAME
และด้วยการ.
ส่งกลับหนึ่งในสองไดเรกทอรีเหล่านี้ขึ้นอยู่กับสถานการณ์สิ่งที่ไร้สาระ
แต่เพื่อหลีกเลี่ยงความยุ่งยากทั้งหมดและการใช้สคริปต์ตัวเรียกใช้คุณสามารถใช้อย่างใดอย่างหนึ่ง$PWD
หรือ$PSSCRIPTROOT
แทน.
การแสดงไดเรกทอรีปัจจุบันขึ้นอยู่กับสภาพอากาศที่คุณต้องการแสดงไดเรกทอรีการทำงานปัจจุบันหรือไดเรกทอรีที่สคริปต์ถูกเรียกใช้ และถ้าคุณด้วยเหตุผลบางอย่างต้องการดึงอีกสองไดเรกทอรีที่.
$HOME
ผลตอบแทนที่คุณสามารถใช้
ฉันแค่มีสคริปต์ตัวเรียกใช้ภายในไดเรกทอรีรากของแอพของฉันที่ฉันพัฒนาด้วย PowerShell ซึ่งเรียกใช้สคริปต์แอพหลักของฉันและอย่าลืมเปลี่ยนไดเรกทอรีการทำงานปัจจุบันภายในซอร์สโค้ดของแอพของฉันดังนั้นฉันจึงไม่ต้องกังวลเกี่ยวกับเรื่องนี้ และฉันสามารถใช้.
เพื่อเป็นตัวแทนของไดเรกทอรีปัจจุบันและเพื่อสนับสนุนไฟล์ที่อยู่ญาติในแอปพลิเคชันของฉันโดยไม่มีปัญหา สิ่งนี้ควรทำงานใน PowerShell เวอร์ชันใหม่กว่า (ใหม่กว่ารุ่น 2)