问题标签 [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 投票
1 回答
164 浏览

powershell - 如何将powershell模块运送到生产环境?

我已经在 ps1 文件中编写了所有的 powershell 函数。

在另一个 ps1 文件中,它是点源文件,并且正在调用函数。

当我寻找更好的方法时,我开始知道将所有功能作为模块 (.psm1) 是更好的选择。

但是对于 .ps1 文件,我可以简单地将它放在一个文件夹中并发送它。

使用 .psm1 文件,它说我必须将其添加到特定位置以便可以导入。

那么如何向客户提供.psm1 文件呢?我们应该指示他们在使用之前复制到提到的位置吗?(如果我们不通过微星发货)

0 投票
1 回答
792 浏览

powershell - 模块中的 PowerShell .ps1 文件 cmdlet

现在我有一组.ps1相互关联的 PowerShell 脚本 cmdlet(它们可以接受参数),但每个都相当复杂。我想将它们组织成一个模块,最好将它们保存在单独的文件中。

最好的方法是什么?我可以将它们保存在单独的 .ps1 文件中,并使用模块清单来说明它们是模块的一部分吗?我是否需要将文件点源到.psm1文件中以保持文件分离?还是将它们分成单独的文件是不明智的?

0 投票
1 回答
346 浏览

powershell-3.0 - 在单个模块清单中混合来自程序集和 psm1 的 cmdlet

我有一个 C# 项目,其中包含一些自定义 cmdlet 和一个加载它们的模块清单,将程序集指定为 RootModule(我使用的是 PowerShell 3.0)。

我需要添加一些写在 psm1 文件中的 cmdlet,并且我想在同一个 ModuleManifest 中导出它们。

例如,如果模块名为 MyModule,我在 MyModule.psd1 中尝试了类似的操作:

所有文件(MyModule.psd1、MyModule.dll 和 MyModule.psm1)都包含在由 PSModulePath 字符串引用的路径中的 MyModule 目录中。

该模块已加载程序集中的所有 cmdlet,但我无法从 .psm1 文件中看到导出的函数(Export-ModuleMember -Function "*")。我想做的事有可能吗?如果是,如何?

谢谢

0 投票
2 回答
3739 浏览

c# - 从 C# 调用特定版本的 PowerShell

我正在尝试Get-VM在 Hyper-V 主机上使用从 C# 调用的 Cmdlet。

Hyper-V显然,必须先导入相应的 PowerShell 模块。但是,导入失败 - 显然是因为该模块仅在 PowerShell 3.0 上受支持(至少这是我从本文中得出的结论)。不过,System.Management.Automation 使用的 PowerShell 似乎是 2.0 版。

返回

无法导入“C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Hyper-V\Hyper-V.psd1”模块,因为其清单包含一个或多个无效成员。有效的清单成员是 ('ModuleToProcess', ...)。删除无效的成员('HelpInfoUri'),然后再次尝试导入模块。

有没有办法在 C# 中使用特定版本的 PowerShell?

0 投票
3 回答
11605 浏览

powershell - 将 Powershell 脚本组合到一个模块中

我有六个具有相关功能的 powershell 脚本(.ps1 文件)。有没有一种简单的方法可以将它们组合成一个模块,以便我可以像普通 CmdLets 一样调用它们?

例如,而不是运行:

我可以导入模块并编写:

0 投票
2 回答
179 浏览

c# - Powshell 二进制模块

我有一个带有派生自 cmdlet 的基类的 powershell 模块,并且我的所有 cmdlet 都派生自该模块。Import-module 看不到我从 cmdlet 间接派生的任何类。我是否需要添加清单来支持这种结构。

0 投票
1 回答
2902 浏览

powershell - 如何将值或对象从 C# PowerShell 命令返回到 PowerShell?

我正在使用带有 System.Management.Automation DLL 文件的 C# 库 (.NET 4) 来为 PowerShell (2.0) 实现一些命令。

我需要从 PowerShell 脚本中的命令中获取值。

我想获得价值的方式是这样的:

0 投票
1 回答
393 浏览

powershell - Powershell 导入模块失败并出现 DllNotFoundException

尝试在另一台装有 powershell 2.0 的计算机上使用http://powershellgac.codeplex.com,在我的主电脑上的 powershell 3.0 中成功使用它,但在另一台电脑上显示:

括号都填在我的主电脑上,为什么这不起作用?我已将 ExecutionPolicy 设置为“无限制”。还是同样的错误。我已经在两台电脑上正确设置了 $env:PSModulePath。(否则它怎么会找到 Gac 清单)

编辑:我忘了添加最重要的信息:当我在 Powershell ISE 中启动 .ps1 脚本时,它可以工作,即使在另一台电脑上也是如此。很明显,脚本本身没有任何问题,所以我一无所知。

0 投票
1 回答
7104 浏览

powershell - 如何在 PowerShell v3 模块中可靠地引用外部 .NET 程序集?

我正在开发一个 PowerShell v3 模块,该模块需要使用一些外部 .NET 程序集中包含的类型。

我希望这个模块能够合理地自包含以便于部署,并且我不想依赖在 GAC 中加载的这些程序集。理想情况下,我想将所需的程序集 dll 放在模块文件夹中,然后在加载模块时依靠 PowerShell 自动加载这些程序集。

我知道我可以使用 Add-Type 命令强制加载程序集,如下所示:

但我也阅读了模块清单中所需的程序集属性,我希望这种方法可以消除看似脆弱的 Add-Type 代码:

引用模块内的外部程序集最可靠的方法是什么?加载模块时,在清单中声明依赖项会隐式加载程序集吗?如果我利用模块清单来列出所需的程序集,我还需要编写加载程序集的代码吗?

我真的不是在寻找一个简单的“让它工作”的解决方案,因为我已经使用 Add-Type 方法让它工作了......我正在寻找最可靠的方法的指导和建议。

0 投票
2 回答
7273 浏览

powershell - 在 Powershell 脚本中更改输出颜色

我想修改我的 ActiveDirectory 查找脚本以输出某个颜色的结果。

脚本导入 AD 模块,然后提示您输入用户名并查看某些属性,例如姓名、电子邮件地址和员工 ID。

我想根据输出更改几个属性的颜色。

例如,如果“LockedOut”或“PasswordExpired”为“True”,我希望这些特定结果的文本颜色为红色。

那可能吗?任何帮助是极大的赞赏!

这是脚本