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

powershell - 如何加载我的自定义 PowerShell 模块?

我将执行策略设置为 Unrestricted,我已将文件夹添加到模块路径中,文件夹中有一个与文件夹同名的模块,但我只能通过文件路径加载模块。知道为什么吗?我需要模块来加载其他模块,我想要我自己的文件夹,并且我不想一直在同一个文件夹中调用脚本。

建议的链接How can I re-use/import script code in PowerShell scripts? 仅引用内置位置和绝对导入路径,这都不符合我的需要。我希望我的脚本和模块彼此靠近但不在同一个文件夹中,并且希望部署到其他机器而不必复制文件夹位置。

0 投票
2 回答
3543 浏览

powershell - Powershell不从模块导入函数

我正在尝试在此处设置 NuGet 提要,并且效果很好。我通过我的提要安装了一个模块

但是,当我运行 Get-Module 时,我没有得到任何功能并且它是一个清单?

如果我手动转到安装位置并手动导入

我的清单文件确实有这些行,所以我不明白为什么Import-Module不能正常工作。

FunctionsToExport = '*'

CmdletsToExport = '*'

0 投票
1 回答
1487 浏览

powershell - 如何从模块外部访问模块中定义的类?

我无法从另一个类访问一个类。类在不同的文件中定义。

0 投票
1 回答
1418 浏览

powershell - 无法加载 PowerShell 脚本模块

我正在尝试加载 PowerShell 脚本模块。以下是我正在遵循的步骤

我在文件夹“C:\windows\system32\WindowsPowerShell\v1.0\Modules**PSModuleTest**”下创建了 2 个文件

PSModuleTest.psd1

PSModuleTest.psm1

一旦将上述两个文件放在正确的文件夹下,我就测试了模块路径是否包含在 $env:PSModulePath 中,并且它在那里。我还通过输入 $host 命令验证了我不在旧版本的 PowerShell 上。

当我执行 Get-Module 命令时,令人惊讶的是我没有看到我的新模块已加载。所以我尝试通过输入以下命令来加载模块,但没有成功。

有关更多详细信息,请参见下图了解所有命令的输出。

在此处输入图像描述

0 投票
1 回答
61 浏览

powershell - PowerShell 模块意外终止

我正在研究的一个 PowerShell 模块的行为非常奇怪......

我在一个文件中有以下代码RestoreTestFiles.psm1(位于%USERPROFILE%\My Documents\WindowsPowerShell\Modules\RestoreTestFiles\):

我这样调用函数:

由于某种原因,输出只是

C:\some\path\* 以 \* 结尾!

或者

C:\some\path 不以 \* 结尾。

但它永远不会运行 theCopy-Item或 final Write-Host。如果我设置一个断点,执行就会一团糟:

  1. 在设置的断点处停止if (!(Test-Path $backupDir))
  2. 我走进去if ($backupDir.EndsWith("\*"))
  3. 我走进去Write-Host "$backupDir ends with \*!"
  4. 我走进去,它停止运行。

为什么脚本在它应该终止之前终止?

编辑:我尝试将函数移动到常规.ps1脚本并从同一个脚本调用函数并且它工作正常......它只会在函数位于模块中并从模块外部调用时过早终止。是什么赋予了?

0 投票
0 回答
154 浏览

powershell - 在 PowerShell 中加载模块后的 ScriptsToProcess 等价物

当使用 Import-Module 导入模块时,我希望该模块在执行 Import-Module(被调用者)的上下文中点源一组脚本(如果它们存在) - 而不是在模块的上下文中。目前尚不清楚如何做到这一点。

模块清单中有一个“ScriptsToProcess”部分,其中包含在被调用范围内加载模块之前要运行的脚本,但是在模块加载后似乎没有等效项。有没有一种直接的方法来实现这种行为?

这是 psm1 文件中的一个示例,该文件不起作用,因为它是点源到模块的范围,而不是点源到被调用者的范围(通常是在您执行 Import-Module 的地方)。

0 投票
4 回答
48875 浏览

powershell - 如何强制 powershell 重新加载自定义模块?

我创建了一个模块“ActiveDirectory.psm1”,其中包含 powershellv5 中的一个类。我将该模块导入另一个名为“test.ps1”的文件中,然后从该类中调用一个方法。

test.ps1 包含以下内容:

这一切都按预期工作,但是当我对 ActiveDirectory.psm1 进行更改并保存它们不会立即反映的更改时。即如果 ActiveDirectory.psm1 包含:

如果我将其更改为

输出仍然是“做某事”

我猜它已经将模块存储在内存中并且没有重新加载它因此错过了我所做的更改。我需要运行什么命令来加载模块的最新保存版本?

0 投票
1 回答
3006 浏览

powershell - PowerShell 使用第三方模块而不安装它

我相信这是可能的,但找不到任何有用的东西。我写了一个局域网扫描仪脚本。为了尽可能地自动化事情,我不依赖用户的任何输入。该脚本检查本地接口 IP 地址并使用缩进网络工具模块来计算可能的 IP 地址数量和每个 ping。

问题是因为我使用的是第三方工具,所以我必须将它安装在我想使用这个脚本的任何机器上。有没有办法可以将这个第三方模块包含在我的脚本中,比如将它们放在同一个文件夹中而不必单独安装?

0 投票
1 回答
492 浏览

.net - PowerShell 如何加载二进制模块的依赖程序集?

我有一个 PowerShell 二进制模块,它引用了我想要 NGEN 并在运行时使用它的 NI(本机映像)的程序集“X”。

在模块清单中,我在RequiredAssemblies 中添加了“X”程序集。

查看 Fusion Log Viewer 我看到以下内容:

  1. 导入模块后,程序集“X”无法加载:

    操作失败。绑定结果:hr = 0x80070002。该系统找不到指定的文件。

  2. 在调用第一个需要“X”的命令后,FusLogViewer 显示“X”的新记录,包括版本、文化等。现在加载成功,但它位于 LoadFrom 上下文中,这阻止了加载其 NI。

LOG:此绑定在 LoadFrom 加载上下文中开始。

警告:将不会在 LoadFrom 上下文中探测本机图像。本机映像只会在默认加载上下文中进行探测,例如使用 Assembly.Load()。

我的问题是:

1、PowerShell加载依赖程序集的机制是什么?

2. 我可以在加载上下文中加载我的“X”程序集以使用它的 NI 吗?

谢谢你!- 迪米塔

0 投票
2 回答
138 浏览

powershell - 无法从自定义对象中的方法调用 exit()

我正在尝试使用答案中描述的 PS 模块来模拟类。但是,似乎不可能exit从这样的“实例方法”中获得:

结果是

  1. 首先为什么会发生这种情况,为什么异常如此神秘?
  2. 正确执行此操作的规范方法是什么?我确实想退出并停止所有进一步的执行,而不是恢复控制流。我还需要能够返回退出代码。