รับตำแหน่งของไฟล์ Powershell ที่มีฟังก์ชันภายนอก

ฉันต้องเรียกใช้ฟังก์ชัน PowerShell ที่กำหนดไว้ในไฟล์ในโฟลเดอร์แยกต่างหาก ฟังก์ชั่นนั้นจำเป็นต้องใช้ dll ที่อยู่ในโฟลเดอร์เดียวกัน มีวิธีง่ายๆ ในการทำเช่นนี้หรือไม่?

รายละเอียด:

โครงสร้าง:

  • สร้าง\build.ps1
  • เครื่องมือ \ myTool \ fileWithFunction.ps1
  • เครื่องมือ \ myTool \ someDll.dll

build.ps1 ได้รวม "...\tools\myTool\fileWithFunction.ps1"

มันเรียกใช้ฟังก์ชันในไฟล์นั้น ฟังก์ชันนั้นจำเป็นต้องโหลด someDll.dll ฉัน สามารถ ส่งตำแหน่งของโฟลเดอร์ (toos\myTool) ในการเรียกใช้ฟังก์ชัน แต่สงสัยว่ามีวิธีที่ฟังก์ชันใน fileWithFunction สามารถระบุตำแหน่งของ dll ได้ด้วยตัวเองหรือไม่ (สมมติว่า ว่ามันอยู่ในโฟลเดอร์เดียวกันเสมอ)


person ashic    schedule 28.04.2014    source แหล่งที่มา
comment
stackoverflow.com/questions/801967/   -  person Raf    schedule 28.04.2014
comment
จริงๆ แล้วฉันมี \tools\psake\psake เรียก build\build.ps1 การใช้โค้ดในโพสต์นั้นทำให้ฉัน \tools\psake แทนที่จะเป็น \tools\myTool   -  person ashic    schedule 28.04.2014
comment
* ... \psake เรียกโดย build\build.ps1   -  person ashic    schedule 28.04.2014


คำตอบ (2)


ใช้ $PSScriptRoot นี่ควรจะได้สิ่งที่คุณต้องการ

person Raf    schedule 28.04.2014

และถ้าคุณใช้ PowerShell V2 (หวังว่าคุณจะใช้อย่างน้อย v3) ให้ใส่สิ่งนี้ใน fileWithFunction.ps1

$ScriptDir = {Split-Path $MyInvocation.ScriptName –Parent}

จากนั้นเข้าถึง dir ดังนี้:

"ScriptDir is $(&$ScriptDir)"

เหตุผลที่ใช้ scriptblock ก็เพื่อ มั่นใจในความปลอดภัยเมื่อทำการจัดหาไฟล์สคริปต์ dot

person Keith Hill    schedule 28.04.2014