請不要在未閱讀本文其餘部分的情況下立即將其標記為重複問題。這聽起來與許多其他人一樣,但根本不完全相同。
我已經經歷了大約 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
這是一個可能更有意義的屏幕截圖:
請注意,所有輸出都指向我的模塊定義,而不是當前執行的腳本。
我真的希望這裡有人知道某種解決方法或晦澀的技術可以解決這個限制。
非常感謝任何形式的幫助或指導。
使用$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] 删除。
我来说两句