问题标签 [powershell-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4613 浏览

powershell - 从模块中导出 Powershell 5 枚举声明

我在模块中定义了一个枚举类型。加载模块后,如何将其导出为可从外部访问?

如果枚举可用,我的高级功能将使用枚举而不是ValidateSet使用枚举,但如果不可用则失败。

更新: 将其分离为 ps1 并对其进行点源(ScriptsToProcess)是可行的,但是我希望有一种更清洁的方法。

0 投票
0 回答
277 浏览

powershell - 动态调用 Export-ModuleMember

你能告诉我为什么下面的代码没有导出任何函数:

或者这之间的区别:

不工作:

在职的:

更新:

调用“import-module MyCrazyModule”时,可以看到导出的命令(get-module)。

但是,当调用“get-module -ListAvailable”时,导出的命令属性为空。(模块在 PSModulePath 中)

更新 2:证据

$PSModulePath 包含 D:\powershell

模块:“D:\powershell\MyCrazyModule\MyCrazyModule.psm1”

没有可见的出口:

在此处输入图像描述

然而随着内容

在此处输入图像描述

谢谢

0 投票
2 回答
2413 浏览

powershell - 如何按需加载 PowerShell 函数?

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

所以我想做这样的事情:

现在,MyFunctions.ps1我有一个功能:

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

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

你看,我想按需加载其他功能,直到我选择它们才可用。

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

0 投票
1 回答
634 浏览

powershell-4.0 - 如何使用 PowerShell 中的模块清单从多个文件中导出变量?

我正在尝试使用 PowerShell 4.0 将多个模块打包到一个清单模块中。基本上,我有 3 个设置模块来做一些事情。我使用我的清单模块打包这三个。然后我只导出所有三个模块中的一些函数和变量。但是,只有我的函数可以从外部调用,我的变量无处可寻。有谁可以帮我离开这里吗?我基本上遵循了这个指南

这是我的代码:

Setup.ps1(启动脚本):

Setup.psd1(清单模块):

FirstSetup.psm1(第一个模块):

第二和第三个设置:与第一个相同,只有变量和函数被命名为 firstVariable、thirdVariable、Start-SecondSetup 等。

所以我的具体问题是,当我尝试$firstVariable从 Setup.psm1 访问时,我收到一个未定义的错误。但我在清单模块中将其标记为导出。那么我在这里错过了什么?当Start-FirstSetup被调用时,它没有任何问题,我什至可以调试我的模块,但即便如此我的 $firstVariable 是未定义的。

0 投票
2 回答
2340 浏览

powershell - Powershell - Export-ModuleMember 不起作用

我是 PowerShell 的新手,我刚刚开始创建自己的模块。我创建了脚本和清单文件,并将它们放入命令C:\Program Files\WindowsPowerShell\Modules\列表之一的目录中。$env:PSModulePath

我也可以导入和删除模块,但是当我尝试调用其中一个函数时,它不会被识别为小程序或命令。

我使用 Import-Module 命令:

我的脚本文件是这样的:

我的清单看起来像这样:

我需要将所有导出的函数写入清单吗?

感谢您的帮助。

0 投票
1 回答
4071 浏览

powershell - #Requires 是否在模块脚本中工作?

考虑以下模块脚本:

MyWebApp.psm1

Export-ModuleMember为简单起见省略。没有它,脚本仍然可以作为模块工作。)

如果这是一个ps1脚本,#Requires则顶部的注释将强制 PowerShell 在以下情况下抛出错误

  • 版本低于4
  • 无法加载(导入)WebAdministration 模块

但是如果我尝试使用 导入这个Import-Module,这些有什么影响吗?文档只是说#Requires脚本”,但没有说明脚本模块是否算作“脚本”。如果没有,我能做些什么呢?

0 投票
0 回答
802 浏览

powershell - Test-ModuleManifest 在模块中的环境变量上失败

我有一个内部 PowerShell 存储库,它利用 PowerShell 5.x 的包管理功能。

我遇到了 Test-ModuleManifest 的问题,它在运行 Publish-Module 时在后台调用。

在我的模块中使用 $env:ProgramFiles 会导致问题。

如果我对该值进行硬编码,则该模块将正常发布。

这是有效的 C:\Program Files 的硬编码路径

要创建本地 PowerShell 存储库来对此进行测试,您可以运行以下命令。

设置本地存储库 Register-PackageSource -Name Local -Location '\\localhost\C$\temp' –ProviderName PowerShellget -Trusted

尝试发布 Publish-Module -Path C:\Users\MM\Desktop\getAvState\getAvState -Repository Local -Verbose

最后注销本地仓库 Unregister-PackageSource -Source Local

这是 Test-ModuleManiest 在清单文件上运行时,模块设置为使用“C:\Program Files\Microsoft Security Client\MpProvider”的硬编码值

这是当模块“$env:ProgramFiles\Microsoft Security Client\MpProvider”中包含以下内容时

0 投票
3 回答
9628 浏览

powershell - 如何将模块安装到自定义目录中?

目前我们正在使用以下命令安装一些模块,但它会将模块安装在C:\Program Files\WindowsPowerShell\Modules.

E:\Modules我们的要求是在文件夹中安装这个模块。为此,我更新了PSModulePath环境变量,如下所示。(https://msdn.microsoft.com/en-us/library/dd878350(v=vs.85).aspx

但它仍然安装在C:\Program Files\WindowsPowerShell\Modules.

在安装模块之前如何更新PSModulePath到?E:\Modules

0 投票
1 回答
672 浏览

powershell - 如何找出 PowerShell 模块的 ArgumentList?

我正在尝试编写一个脚本,该脚本需要检测 PowerShell 模块的 ArgumentList 是什么。有什么办法可以找出来吗?

最终游戏是能够使用它来创建一个简单的 DI 容器来加载模块。

0 投票
4 回答
47267 浏览

powershell - PowerShell 5.1 - 如何卸载当前使用的模块

我们在一个部署 PowerShell 脚本中使用了一些 PowerShell 模块。使用以下命令,我们将模块(即 XXXX)安装到“C:\Program Files\WindowsPowerShell\Modules”中。

现在,一旦我们使用了这个模块的功能,我们在部署脚本结束时使用以下命令将其卸载。

但是这个卸载模块命令给出了以下错误。

有没有人有任何想法来解决这个问题?