PowerShell脚本函数加载失败求助:Get-My-PlainText调用报错
问题原因分析
你的scriptB.ps1里的代码存在两个关键问题:
powershell .\my_functions.ps1会启动一个独立的PowerShell子进程执行脚本,函数仅在这个子进程中生效,当前脚本所在的主进程无法访问这些函数。Import-Module是用来导入PowerShell模块文件(后缀为.psm1)的命令,直接导入普通.ps1脚本不会加载其中的函数定义。
解决方法
以下三种方法任选其一即可彻底解决问题:
方法一:使用点 sourcing 加载脚本(最简单直接)
修改scriptB.ps1的内容,替换原有两行代码为:
. .\my_functions.ps1
这里的.(点)是PowerShell的点 sourcing语法,作用是在当前PowerShell进程中执行指定脚本,脚本里的函数会直接被定义到当前会话中,后续就能正常调用Get-My-PlainText。
方法二:转换为PowerShell模块(适合长期复用)
如果这个函数需要在多个脚本中复用,推荐将其转为标准模块:
- 把
my_functions.ps1重命名为my_functions.psm1(模块文件的标准后缀)。 - 修改
scriptB.ps1的导入代码为:
Import-Module .\my_functions.psm1
或者在脚本顶部使用更现代的模块声明(PowerShell 5.1及以上版本支持):
using module .\my_functions.psm1
模块导入后,其中的函数会被加载到当前会话,可直接调用。
方法三:检查函数名称大小写(可选)
错误信息中显示的是Get-My-Plaintext(最后一个t小写),而你定义的函数是Get-My-PlainText(最后一个T大写)。虽然PowerShell默认大小写不敏感,但保持调用名称和定义完全一致可以避免潜在的意外问题。
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

