【问题标题】:How to Load PowerShell Functions On-Demand?如何按需加载 PowerShell 函数?
【发布时间】:2023-04-01 12:59:01
【问题描述】:

在我启动 PowerShell 时加载的个人 PowerShell 配置文件中,我想通过调用一个函数来包含一组函数。

所以我想做这样的事情:

function loadMyFunctions{
    . \MyFunctions.ps1
}

现在,在MyFunctions.ps1 我有一个函数:

function bobtest{
    write-host "My name is Bob Newhart."
}

我能够加载脚本 MyFunctions.ps1,但加载后我无法在控制台中调用 bobtest - 我收到错误消息 The term bobtest is not recognized...

但是,如果我只是在函数外部加载脚本,则该脚本已加载,我可以正常调用 bobtest - 但这意味着我不能在加载配置文件时不加载 MyFunctions - 我 必须加载MyFunctions,无法选择。

你看,我想按需加载其他功能,并且在我选择之前不让它们可用。

还有其他方法可以做到这一点,或者甚至可以做到吗?

【问题讨论】:

  • 这很有趣 - 我简单地考虑了模块然后忘记了它 - 我会尝试弄清楚如何做到这一点。
  • 抱歉不小心删除了该评论。模块是一个很好的方法!我过去使用过那些,而不是使用函数。从来没有遇到过这些问题。使用配置文件调用其中包含其他功能的模块。我已经删除了之前的答案,因为我同意我错误地解释了这个问题。

标签: powershell include powershell-module


【解决方案1】:

查看page,如何创建 PowerShell 模块和清单。

这将使您能够创建一个具有所有自定义功能的模块!然后在您的 loadMyFunctions cmdlet 中添加 Import-Module NewModuleName

这将使您能够使用您的 cmdlet。

希望这会有所帮助, 拉克兰

【讨论】:

  • 这很好用,正是我想要的——感谢你的好主意。
  • 非常好心,乐于助人
【解决方案2】:

最好的方法是使用模块。但是,如果您想以不同的方式获得,那么您可以尝试使用您的方法。

请参阅我执行的以下屏幕截图。

我有一个函数addition,它只是做加法,我把它保存为funct1.ps1

现在我正在从另一个脚本的另一个函数调用相同的函数,只是使用点源而不使用 as 模块,结果我得到了正确的结果。

Funct1.ps1

从另一个脚本中的另一个函数触发函数

希望对您有所帮助...!!!

【讨论】:

  • 这也是一个合理的方法。我知道一个函数可以点源脚本并使用它的函数,但我真正想要的是一种通过选择动态“包含”脚本的方法。
猜你喜欢
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
相关资源
最近更新 更多