PowerShell模块,从另一个NestedModule调用NestedModule中的函数

2024-03-20

我有一个 Powershell 模块,在清单中我声明了主模块和两个嵌套模块。 模块结构如下:

- [dir] Pivot.DockerAdmin
    - [manifest] Pivot.DockerAdmin.psd1
    - [main module file] Pivot.DockerAdmin.psm1
    - [nested script] DockerfileScripts.ps1
    - [nested script] DockerCliScripts.ps1

什么有效主模块 (Pivot.DockerAdmin.psm1) 可以毫无问题地调用嵌套模块文件(DockerfileScripts.ps1、DockerCliScripts.ps1)中的函数。请注意,除了清单文件中的条目之外,没有包含这些文件的特定逻辑。

什么不起作用一个嵌套模块脚本文件 (DockerfileScripts.ps1) 无法调用另一嵌套模块脚本文件 (DockerCliScripts.ps1) 中的函数。

嵌套模块只是简单的脚本文件。因此,实际上,我使用 NestedModule 概念对其他文件中的某些函数进行逻辑分组。

模块设置正确。我对此很有信心,因为我什至在没有任何特殊处理的情况下在构建箱上运行了 Pester 测试。

我希望能够从另一个嵌套模块调用嵌套模块中的函数,就像主模块可以调用其中的函数一样any嵌套模块,但这失败了无法识别的命令 error.

如果这是不可能的,是否有关于在 PS 模块内组织脚本文件的任何建议,以便可以进行类似的脚本划分/关注点分离?


因此,如果您看一下我在这里发布的示例:

https://stackoverflow.com/a/55064995/7710456 https://stackoverflow.com/a/55064995/7710456

我将对此进行一些扩展。

我又看了一遍,并为所有模块创建了一个模块清单,所有这些模块都需要遵循 PowerShell 模块的标准(位于与 PowerShell 模块同名的文件夹中,位于PS模块路径)

写入BazFunctions.psm1:

Function Write-Baz {
    return "Baz"
}

写BarFunctions.psm1:

Function Write-Bar {
    return "Bar"
}

Function Write-BarBaz {
    $bar = Write-Bar;
    $baz = Write-Baz;
    return ("{0}{1}" -f $bar, $baz)
}

写入-FooFunctions.psm1

Function Write-Foo {
    return "Foo"
}

Function Write-FooBar {
    $foo = Write-Foo
    $bar = Write-Bar
    return ("{0}{1}" -f $foo, $bar)
}

Function Write-FooBarBaz {
    $foobar = Write-FooBar
    $baz = Write-Baz
    return ("{0}{1}" -f $foobar, $baz)
}

Function Write-FooBazBar {
    $foo = Write-Foo
    $bar = Write-Bar
    $baz = Write-Baz
    return ("{0}{1}{2}" -f $foo, $bar, $baz)
}

现在-差异。在 Write-BarFunctions 的清单中(注意是必需的,不是嵌套的):

RequiredModules = @('Write-BazFunctions')

请注意与上面链接的原始答案的另一个区别,我直接针对 psm1 文件,而是仅通过模块名称引用它们。

完成此操作后,我就能够导入 Write-FooFunctions 并且所有函数都可用。由于 Write-BarFunctions 中的 Write-BarBaz 从 Write-BazFunctions 调用 Write-Baz,您可以看到这将允许嵌套模块相互引用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PowerShell模块,从另一个NestedModule调用NestedModule中的函数 的相关文章

  • 使用 Powershell 在字符串中搜索反斜杠

    我需要搜索字符串中反斜杠的数量以确定一些文件路径参数 我还没有找到一种方法来搜索反斜杠而不让 Powershell 认为它是一个转义字符 regex Matches FilePath count Or a match 这两个都会出现错误 非
  • 运行多个 powershell 命令

    我如何运行前导命令 例如set adserversettings当我在 C 中调用 powershell 命令时 现在它返回 0 个结果 这是我正在使用的代码 Command command1 new Command set adserve
  • cmd中哪个符号是转义符?

    我有这个代码 powershell command New Object Net WebClient DownloadFile linkToMyFile file C my file 它用于下载文件 当我在远程服务器上的 cmd 中执行它时
  • nuget 对文件名中的空格进行编码

    我使用 pack 命令创建了一个 nuget 包 http docs nuget org docs reference command line reference Pack Command http docs nuget org docs
  • PowerShell:使用 Invoke-Expression 管理错误

    我尝试弄清楚如何确定使用 Invoke Expression 的命令抛出是否失败 即使变量 LASTEXITCODE 或 ErrorVariable 也对我没有帮助 例如 PS C gt cmd cat c xxx txt 使用 Invok
  • powershell循环持续检查服务器是否启动

    我想运行一个脚本来检查 5 台服务器是否已启动并根据特定服务正在运行 如果该服务正在运行 那么我们就知道该服务器已启动并可访问 如果它没有回复 那么我希望它继续检查 这是我到目前为止得到的 Get Service LANMANSERVER
  • 我可以在 Emacs 的 shell 模式下使用 PowerShell 吗?

    我可以在 emacs 的 shell 模式下使用 powershell 作为 shell 吗 How 请参阅 Jeffrey Snover 的博客文章在 Emacs 内运行的 PowerShell http blogs msdn com p
  • 拖放到 Powershell 脚本

    我以为我已经找到了这个问题的答案 但我玩得越多 我就越发现它是 Powershell 的设计缺陷 我想拖放 或使用发送到机制 将多个文件和 或文件夹作为数组传递到 Powershell 脚本 测试脚本 Test ps1 param stri
  • 为管道重用自定义对象时出现意外结果

    A while ago I changed my Join Object https stackoverflow com a 45483110 1701026 cmdlet which appeared to cause a bug whi
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 如何在 PowerShell 中将长命令拆分为多行

    如何在 PowerShell 中获取如下所示的命令并将其拆分为多行 C Program Files IIS Microsoft Web Deploy msdeploy exe verb sync source contentPath c w
  • 从 Powershell 更新计划任务脚本

    我正在尝试编写一个每天运行一次的 Powershell 脚本 它将执行的众多功能之一是确保脚本本身是最新的 我的问题是 由于我对脚本进行了版本控制 因此我需要更新从脚本中创建的计划任务 我在这里考虑了两种不同的方法 其中我也无法弄清楚 我最
  • 如何获取 64 位的 pshome 路径?

    32 位的主文件夹路径可以使用 PSHome多变的 c Windows System32 WindowsPowerShell v1 0 如何访问包含 64 位版本路径的变量 c Windows SysWOW64 WindowsPowerSh
  • powershell:使用参数启动程序的脚本?

    当我运行下面的 Powershell 脚本时 我收到以下错误 如何通过 powershell 带参数运行程序 该脚本将是组策略登录 Invoke Expression 找不到位置参数 接受参数 TBHSERVER NETLOGON BGIn
  • PowerShell(2.0,32 位)无法加载 TFS 2010 管理单元...除非可以

    我有一个与 Team Foundation Server 交互的 PowerShell 脚本 当我在 PowerShell 控制台中运行它时 它运行得很好 这对于测试它来说很好 但我想通过双击它或批处理文件或其他东西来运行它 我什至选择右键
  • 获取文件夹及其子文件夹中最长文件路径的长度

    我正在寻找一个可以从命令行 批处理 PowerShell 运行的脚本 该脚本将遍历文件夹及其子文件夹 并返回一个数字 该数字是最长文件路径的长度 我已经看到了一些批处理和 PowerShell 脚本 例如 如何在 Windows 中查找路径
  • 具有相关动态参数的 PowerShell 函数

    我试图定义一个函数 其中动态参数相互依赖 例如 我可能有 1 个参数和两个动态参数 rootPath 驱动器盘符 rootPathItem 第一个文件夹 在驱动器盘符内 rootPathChildItem 第二个文件夹 第一个之内 问题是
  • 使用 powershell 版本 2 查询 AD

    我们有由 Windows 7 和 Windows 10 组成的混合桌面操作系统 我有一个登录脚本 该脚本从每次用户登录时运行的 powershell 脚本收集各种信息 Windows 7 powershell 仅是版本 2 这意味着我无法使
  • 如何在 Powershell 中自动对提示回答“是”?

    如何在 PowerShell 会话中输入 是 作为交互式问题的答案 我知道 在 Bash 中 Yes是在提示上回答 是 的工具 在我的情况下 我无法抑制提示 我正在运行的脚本停止于 如果您想继续 请回复 是 powershell 如何运行脚
  • Get-AzureStorageBlob 抛出找不到您的 azure 存储凭据

    我刚刚开始使用 Azure 在使用 PowerShell cmdlet 处理我的存储帐户时遇到问题 我已经创建了一个存储帐户并在该存储帐户中创建了一个容器 接下来 我安装了 Azure Powershell SDK 和命令让等 并导入了pu

随机推荐

  • 使用 OpenCV 级联分类器与交通标志

    我正在尝试检测一些这样的交通标志 https i stack imgur com yOTZb jpg https i stack imgur com yOTZb jpg 我设法隔离了交通标志 目前它始终是圆形的 http image noe
  • 如何获取进程的内存使用百分比?

    使用以下代码 我可以获得给定进程的内存消耗 以 MiB 为单位 def memory usage psutil return the memory usage in MB import psutil process psutil Proce
  • iOS上传.pdf文件

    如何使用 iOS 版 Objective C 上传文件 我真的被困住了 我可以使用 UIImagePickerController 上传图像 但是 pdf doc 文件有这样的功能吗 提前谢谢了 不 没有 假设您的意思是属于 iBooks
  • Yii2 环境文件夹背后的想法是什么以及如何使用它?

    我已经通读过 Yii2 文档好几次了 我也用谷歌搜索 但还没有找到任何有用的东西 问题是我不理解环境文件夹的概念 请让我解释一下 我可以在 Git 中使用分支 用于开发 登台和生产 local conf文件会被 Git 忽略 并且不会以任何
  • 为 cocoapod 依赖项指定预处理器宏,而不分叉它

    我有一个 Xcode 工作区 由Cocoapod对外部库有一些依赖 其中之一 MTDates https github com mysterioustrousers MTDates 延伸NSDate and NSDateComponents
  • Gravatar:如何知道用户是否拥有真实图片

    我已经在我的网站上使用了头像服务 但我想知道用户是否上传了他们的照片 有办法知道这一点吗 构造URL时 使用参数d 404 如果用户未设置图片 这将导致 Gravatar 返回 404 错误而不是图像 如果您使用从 gravitar 站点链
  • 将整数转换为单词

    为了设计数据可视化样式 我希望能够使用单词显示整数 例如 两千一十七 而不是数字 例如2017 作为我正在寻找的示例 这里有一个适用于小标量整数的快速函数 int to words lt function x index lt as int
  • AppFabric 缓存 - 对象的序列化和反序列化要求是什么?

    问题 当缓存类的实例并立即将其从缓存中取出时 我取回了对象 它不为空 但其所有属性 字段均为空或默认值 cacheHelper PutInCache testModuleControlInfoOne mci mci has populate
  • 在 JavaScript 中解析 ISO 8601 日期

    我需要有关将具有以下结构的 ISO 8601 日期转换为 JavaScript 的帮助 提示 CCYY MM DDThh mm ssTZD 我想像这样设置日期格式 January 28 2011 7 30PM EST 我想让这个解决方案尽可
  • Jquery UI 自动完成图像

    我在这段代码中遇到错误 有谁能够帮助我 h4 search h4
  • 使用平均成本基础法计算成本

    我有这个 pandas 数据框 我按 股票代码 升序排列 然后按 日期 和 类型 排序 它表示相对于 股票代码 列中股票的交易 Type Ticker Qty Price Amount TotalQty Date 2020 03 01 Bu
  • 操作员之间的气流和数据传输

    我是 Airflow 新手 对 Airflow 及其处理器有疑问 当处理器产生输出时 如何将该输出作为输入移动到下一个处理器 有一个名为 nifi 的软件 它将中间输出存储到流文件中 据我所知 airflow 中没有这样的软件 那么这是怎么
  • 如何在自己的自定义解串器中使用一些 Jackson 解串器?

    我正在努力解决问题中提到的问题 我需要创建一些自定义反序列化器 它或多或少是从标准反序列化器进行类型转换的 原因是ZonedDateTime正在为我的输入工作 但我不想将类型更改为ZonedDateTime 但保留LocalDateTime
  • keras 指标在训练期间不同

    我已经实现了一个基于 SIM 的自定义指标 当我尝试代码时它可以工作 我已经使用张量和 np 数组实现了它 并且都给出了相同的结果 然而 当我开始拟合模型时 返回的值比加载训练生成的权重并应用相同函数时得到的值要高得多 我的职能是 def
  • 通过 SSH 隧道的 PostgreSQL

    我想使用 RazorSQL 连接到在远程服务器上运行的数据库 我使用以下命令在本地主机上创建 SSH 隧道 ssh L 1111 remote server com 5432 email protected cdn cgi l email
  • 是否可以将目录从 Google Compute Engine 实例复制到我的本地计算机?

    使用 scp 我可以添加 r标志通过 ssh 将目录下载到我的本地计算机 使用时 gcloud compute scp r 它说 r 不是可用的选项 如果没有 r 我会收到一条错误消息 指出我的源路径是一个目录 这意味着我只能下载单个文件
  • 如何通过按钮选择或不选择剑道网格

    我有一个网格 在网格定义中启用了选择模式 selectable true 我需要通过按钮使网格不可选择 我尝试了这个 但它不起作用 disableKendoGrid click function var grid myGrid data k
  • 带有 VB6/asp 错误的 C# COM 对象

    我正在尝试通过 COM 公开 C 类库 以便我可以在经典的 ASP 网站中使用它 我用过 sn k regasm 和 gacutil 我现在能做的就是回显字符串 以类变量作为输入的方法对我不起作用 即我的测试方法 EchoPerson Pe
  • 如何编写一个单元测试,其中每个测试用例都有不同的输入但执行相同的操作?

    我需要为一些 python 类创建一个单元测试 我有一个输入和预期结果的数据库 这些输入和预期结果应该由 UUT 为这些输入生成 这是我想要做的伪代码 for i 1 to NUM TEST CASES Load input for tes
  • PowerShell模块,从另一个NestedModule调用NestedModule中的函数

    我有一个 Powershell 模块 在清单中我声明了主模块和两个嵌套模块 模块结构如下 dir Pivot DockerAdmin manifest Pivot DockerAdmin psd1 main module file Pivo