【发布时间】:2013-04-07 01:21:25
【问题描述】:
我正在尝试找出一种方法来获取定义 PowerShell 函数的文件路径(例如,Test1 或 Test2),而不是 调用者的路径,可以通过$PSScriptRoot 自动变量轻松获得。
考虑以下文件夹结构:
c:\Scripts\Test.ps1
c:\Scripts\Test1\Test1.ps1
c:\Scripts\Test2\Test2.ps1
Test.ps1
Set-Location $PSScriptRoot;
. .\Test1\Test1.ps1;
. .\Test2\Test2.ps1;
Test1;
Test2;
Test1.ps1
function Test1 {
[CmdletBinding()]
param (
)
Write-Host -Object "Entering Test1";
Write-Host -Object "Exiting Test1";
}
Test2.ps1
function Test2 {
[CmdletBinding()]
param (
)
Write-Host -Object "Test2";
Write-Host -Object "Exiting Test2";
}
我尝试在$PSCmdlet 和$MyInvocation 自动变量上使用各种属性,但似乎无法找到一种方法来获取定义函数的文件的路径,而不是调用者所在的位置.
另外问,当从Test.ps1 调用时,我如何从Test1 函数内部获取路径C:\Scripts\Test1\Test1.ps1? Test2.ps1 脚本和 Test2 函数也是如此。如何从Test2 函数内部获取路径C:\Scripts\Test2\Test2.ps1?
这是不可能的,因为我正在使用. 呼叫运算符将函数导入当前会话?
【问题讨论】: