2012-12-01 50 views
0

我有一個文件內的PowerShell功能myfunc.ps1內無法使用PowerShell的功能外別名

function Set-Util ($utilPath) { 

    if(Test-Path($utilPath)){ 
     $fullPath = Join-Path -Path $utilPath "util.exe" 
     set-alias MyUtil $fullPath 
     #echo "Path set to $fullPath" 
    }else { 
     throw (" Error: File not found! File path '$fullPath' does not exist.") 
    } 
} 

,我點的命令行與

調用它。 \ myfunc.ps1

然後調用

設置-的Util somedirectory

別名被正確設置的功能,但我不能

訪問它在這裏

MyUtil

我是否應該導出別名,因爲範圍只在方法中? 我試圖用 Export-ModuleMember這樣做,但得到一個錯誤,說明cmdlet只能從insdie模塊中調用。

回答

3

你不能這樣做,因爲在調用該函數之前不會設置別名,並且在調用該函數時,別名被限定爲函數作用域,所以當函數完成運行時 - 別名消失。

如果要別名生存,請指定使用範圍參數,其值爲'global'

+0

那麼我如何導出別名?或者我必須將它設置在函數之外? – Vort3x

+1

您將set-alias的-scope參數設置爲'global' –