如何訪問當前調用和/或執行腳本的路徑和文件名 - 利用模塊內函數

請不要在未閱讀本文其餘部分的情況下立即將其標記為重複問題。這聽起來與許多其他人一樣,但根本不完全相同。

我已經經歷了大約 10 個像這樣的Stack Overflow 線程100 萬個 不同的 結果在谷歌上,但絕對沒有任何我想要的效果。我開始認為做我想做的事是不可能的。

反正:

我有一個輔助函數,我在這裡放在一起我想在開發過程中將它用作一個不錯的快捷實用程序。

問題是當我Get-CurrentScriptInfo -All從另一個腳本調用時,返回的值是那些與我調用的函數相對應的值,而不是調用該函數的實際腳本。我在某種程度上明白了,該函數當前正在運行的腳本……但數據對我來說毫無用處:我不需要或不想要該信息。我不妨粘貼 $PSCommandPath 並收工。但我很固執。我希望這能奏效。:)

我試過了:

$MyInvocation.MyCommand.Path 
$PSCommandPath
$PSScriptRoot
((Get-Variable MyInvocation -Scope 1).Value).MyCommand.Path
$global:MyInvocation.MyCommand.Path
$script:MyInvocation.MyCommand.Path

這是一個可能更有意義的屏幕截圖:

不正確的變量

請注意,所有輸出都指向我的模塊定義,而不是當前執行的腳本。

我真的希望這裡有人知道某種解決方法或晦澀的技術可以解決這個限制。

非常感謝任何形式的幫助或指導

澤特42

使用$PSCmdlet自動變量,可用於高級功能

c:\subdir\test1.psm1

Function Get-MyPath {
    [CmdletBinding()]
    param()
    
    $PSCmdlet.MyInvocation.PSCommandPath  # Output
}

c:\test.ps1:

Import-Module .\subdir\test1.psm1 -Force
"My path: $(Get-MyPath)"

輸出:

My path: C:\test.ps1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何測量Linux內核模塊中函數的執行時間?

如何將函數內的列表導入另一個 python 模塊?

調用類模塊的函數

導出/導入自定義模塊時如何計算模塊中的函數數

使用 python3 re 模塊捕獲所有函數調用

從同一項目中的 android 模塊調用可組合函數

使用 ES6 模塊從命令行(Node JS)運行腳本中的函數

檢查函數是否作為導入模塊運行

如何從第三方模塊重新導出函數

如何在函數中模擬函數。是否可以使用兩個或多個補丁來模擬函數內的函數調用?

如何在python中將函數參數作為模塊的屬性傳遞?

將自調用函數從 npm 模塊導入 react/webpack 應用程序

Python - 訪問模塊內的對像變量

使用 Github 包作為 npm 節點模塊時的 Firebase 雲函數部署問題

如何使用工廠模式使用構造函數創建代碼拆分打字稿模塊

無法讓多文件內核模塊工作

在函數或模塊範圍內初始化靜態變量

函數內的 Python 索引問題

如何在編譯的程序中獲取函數和全局變量的 CUDA 驅動程序模塊句柄?

狀態在 React 的函數內不可訪問

在不同範圍內執行函數:Javascript

如何訪問在 Cypress/Javascript 的外部範圍內的函數內更新的變量?

無法訪問裝飾函數內的函數屬性

無法在 Next Js 的內部頁面的 getStaticProps 函數中找到文件路徑

Javascript如何使用模塊從文件中導入/導出所有內容?

未調用就執行的函數

我無法在按鈕(onClick())上的函數調用中訪問地圖函數的索引,這是在地圖()的範圍內,代碼如下

如何在不暴露所有內容的情況下測試 Elm 模塊?

如何在包的命名空間中隱藏內部模塊?