我试图找出一种方法来获取定义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函数内部获取路径?
这是不可能的,因为我正在使用.呼叫操作员将函数导入当前会话吗?