内部功能的Powershell别名不在外面

时间:2012-12-01 12:30:31

标签: function powershell alias

我在文件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

然后致电

  

Set-Util somedirectory

在函数中正确设置了别名,但我无法使用

访问它
  

MyUtil

我应该导出别名,因为范围仅在方法中吗? 我试过这样做 Export-ModuleMember但是出现错误,说只能从insdie模块中调用cmdlet。

2 个答案:

答案 0 :(得分:3)

您不能这样做,因为在调用函数之前不会设置别名,并且在调用函数时,别名的范围限定为函数范围,因此当函数完成运行时 - 别名消失了。

如果希望别名生存,请指定use scope参数,其值为'global'

答案 1 :(得分:-2)

Aliases can only point to cmdlets,不输出cmdlet(对象)。