ฉันมีปัญหาที่คล้ายกันและทำให้ฉันมีปัญหามากตั้งแต่ฉันทำโปรแกรมที่เขียนใน 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)