我试图找出一种方法来获取定义PowerShell函数的文件路径(例如Test1或Test2),而不是调用者的路径,这可以通过$PSScriptRoot
自动变量轻松获得。
考虑以下文件夹结构:
c:\Scripts\Test.ps1
c:\Scripts\Test1\Test1.ps1
c:\Scripts\Test2\Test2.ps1
测试.ps1
Set-Location $PSScriptRoot;
. .\Test1\Test1.ps1;
. .\Test2\Test2.ps1;
Test1;
Test2;
测试1.ps1
function Test1 {
[CmdletBinding()]
param (
)
Write-Host -Object "Entering Test1";
Write-Host -Object "Exiting Test1";
}
测试2.ps1
function Test2 {
[CmdletBinding()]
param (
)
Write-Host -Object "Test2";
Write-Host -Object "Exiting Test2";
}
我尝试在$PSCmdlet
和$MyInvocation
自动变量上使用各种属性,但似乎无法找到一种方法来获取定义函数的文件的路径,而不是调用者所在的位置。
以不同的方式问,我如何C:\Scripts\Test1\Test1.ps1
从Test1
函数内部获取路径,当它被调用时Test.ps1
?Test2.ps1
脚本和Test2
函数也是如此。我如何C:\Scripts\Test2\Test2.ps1
从Test2
函数内部获取路径?
这是不可能的,因为我正在使用.
呼叫操作员将函数导入当前会话吗?