Tre*_*van 6 powershell powershell-3.0
我试图找到一种方法来获取定义PowerShell 函数的文件路径(例如Test1或Test2),而不是调用者的路径,这可以通过$PSScriptRoot自动变量轻松获得.
考虑以下文件夹结构:
c:\Scripts\Test.ps1
c:\Scripts\Test1\Test1.ps1
c:\Scripts\Test2\Test2.ps1
Run Code Online (Sandbox Code Playgroud)
Test.ps1
Set-Location $PSScriptRoot;
. .\Test1\Test1.ps1;
. .\Test2\Test2.ps1;
Test1;
Test2;
Run Code Online (Sandbox Code Playgroud)
Test1.ps1
function Test1 {
[CmdletBinding()]
param (
)
Write-Host -Object "Entering Test1";
Write-Host -Object "Exiting Test1";
}
Run Code Online (Sandbox Code Playgroud)
Test2.ps1
function Test2 {
[CmdletBinding()]
param (
)
Write-Host -Object "Test2";
Write-Host -Object "Exiting Test2";
}
Run Code Online (Sandbox Code Playgroud)
我已经使用了各种关于性的尝试$PSCmdlet和$MyInvocation自动变量,但似乎无法找到一个方法来获取到的路径定义函数,而不是通常是主叫所在的文件.
换句话说,当C:\Scripts\Test1\Test1.ps1从Test1函数中调用时,我如何从函数内部获取路径Test.ps1?这同样适用于该Test2.ps1脚本,和Test2功能.我如何C:\Scripts\Test2\Test2.ps1从Test2函数内部获取路径?
这是不可能的,因为我正在使用.呼叫运算符,将函数导入当前会话?
Sha*_*evy 13
这是另一种方法,使用函数的scriptblock File属性获取包含该函数的文件:
${function:Test1}.File
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3410 次 |
| 最近记录: |