内部函数的电源外壳别名在外部不可用



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

别名在函数中设置正确,但我无法在此处访问它

我的功利

我是否应该导出别名,因为范围仅在方法中?我尝试这样做导出模块成员,但收到错误,指出只能从独立模块调用 cmdlet。

你不能这样做,因为在调用函数之前不会设置别名,当调用函数时,别名的作用域为函数作用域,所以当函数完成运行时 - 别名消失了。

如果希望别名继续存在,请指定值为"全局"的 use scope 参数

别名只能指向 cmdlet,而不能指向 cmdlet(对象)的输出。

最新更新