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

powershell - Powershell Remoting:在远程 pssession 中使用导入的模块 cmdlet

有没有办法在远程会话中使用在本地会话中导入的模块?我查看了 import-pssession,但我不知道如何获取本地会话。这是我想做的一个示例。

另外,我不想在远程会话中导入模块,因为 ps1 文件不在该服务器上。

0 投票
2 回答
14455 浏览

powershell - PowerShell 模块清单 - 自动加载所需模块

我正在创建一个模块,该模块依赖于我需要加载到全局环境中的其他几个模块。我尝试创建一个脚本并使用 ScriptsToProcess 导入模块,但看起来RequiredModules 的检查发生在 ScriptstoProcess 运行之前。

模块清单中是否有一种很好、干净的方式来要求一个模块并在它尚未加载的情况下自动加载它?如果无法加载模块,则RequiredModule 会抛出错误。

0 投票
2 回答
3360 浏览

powershell - 如何管理多文件 Powershell 模块中脚本之间的依赖关系?

我在一个长期项目的过程中编写了大量的 powershell 代码;这些脚本执行各种各样的功能,其中大多数以某种方式依赖于项目范围内的其他脚本。现在,这项工作由几个文件组成,每个文件都包含许多功能。最初,为了使用这些脚本,所有脚本文件都被随意地点源到环境中。

但是,我最近了解到 Powershell 2.0 引入了模块,我想以这种方式将这些脚本部署在一起。由于一个模块的内容都是一起加载的,我想拆分我的文件,以便每个脚本都有自己的文件,以帮助源代码控制。但是,我现在对脚本之间的联系有点不清楚。

我已经做了一些测试,似乎可以将每个函数的 Export-ModuleMember 命令移动到单独的 .ps1 文件中;这似乎更像是声明自己的范围的函数,例如 C# 中的公共和私有范围。但是,在这样做之后,我的 .psm1 文件只包含以下内容:

这看起来对吗?所有的脚本都是点源的,所有的脚本都是在这个假设下相互引用的。他们是否应该使用相对于 $psScriptRoot 的位置来相互引用?

有没有与这两种方式不同的方式?任何人都可以提供建议吗?我对这些还不是很了解。

0 投票
3 回答
3526 浏览

variables - 模块函数中使用的 $_ 变量为空 (PowerShell)

你的一个问题是在这里;)

我有这个功能:

看看$Properties。应该对每个文件进行评估,然后进一步处理文件和属性。

示例如何使用它可能是:

当我将函数复制并粘贴Set-dbFile到命令行并运行示例代码段时,一切都很好。

但是,当我将函数存储在模块中,导入它并运行示例时,$_变量为空。有人知道为什么吗?以及如何解决?(也欢迎其他解决方案)


在脚本中定义/在命令行中键入的函数的结果:

模块中定义的函数的结果:

0 投票
3 回答
257 浏览

powershell - 如何拥有父脚本但保持与 Powershell 脚本的关注点分离?

因此,我正在为产品专用的特定 IIS 站点设置编写一些 IIS 管理脚本,以完成以下任务:

问题是我想为每个关注点保留单独的脚本并在父脚本中引用它们。可以运行父脚本来进行完整的部署/设置。或者,您可以为特定任务运行各个脚本。问题是它们是交互式的,因此它们会请求与完成任务相关的用户信息。

我不知道如何解决每个脚本都会有一个脚本主体从用户那里获取信息的问题,但是如果它被加载到父脚本中,请避免该特定脚本的脚本主体提示用户。

注意:我知道我可以将它们放入模块中,并启动单独的“导出到环境”功能,但是这个脚本将被移动到需要设置的环境中,并且必须手动放置模块 (psm1) 文件进入适当的 PowerShell 模块文件夹只是为了运行脚本是我不是特别喜欢的方法。

我是使用 Powershell 编写脚本的新手,有什么想法或建议吗?

可能的答案*

这可能是(a)解决方案:但我发现我可以从工作目录中导入模块,并且可以从那里访问那些导出的函数。

我也对任何其他建议感兴趣。

0 投票
1 回答
2609 浏览

powershell - 如何从一个开放的工作环境重新加载模块以影响另一个工作环境

我将 PowerShell 项目分解为模块。但是因为它们是模块,所以我每次更改它们时都必须重新加载它们。因此,我编写了一个具有 FileSystemWatcher 的循环,如果其中一个 .psm1 文件发生更改,它将重新加载或导入该模块。

问题是上述循环不会让我在其工作环境中运行其他脚本,因此新环境不会为其加载/重新加载相同的模块。我需要将这些模块保留在主要的默认 PowerShell 模块文件夹之外。当模块在同一环境中更改或影响特定环境时,是否有办法运行重新加载模块的脚本?


更新

所以我运行以下 Module-Loader.ps1 脚本。当我在修改后“保存”*.psm1 文件时,与“FileChanged”事件关联的代码块会触发。但是发生了两个问题:1)我保存时它会触发两次

2a) 如果模块未加载,它将运行 Import-Module $PWD\ModuleName,但至少在环境中实际上不会加载(如果我在将加载的环境中运行相同的代码)

2b)如果它被加载,并且它试图删除模块,它会错误地认为不存在。

我认为虽然这是在会话中运行的,但事件中的代码块与此特定环境无关。

0 投票
1 回答
357 浏览

powershell - 需要 FileSystemWatcher 事件来重新加载当前工作环境中的模块

首先,我在这里有一个类似的问题,但没有解决问题的方向。根据海报Andy Arismendi的想法,我想出了一个可能的解决方案,这是一个新问题:

我正在运行下面的脚本,它将下面的代码块绑定到 FileChanged 事件。当 .psm1 模块文件发生更改时,代码块会检查文件是否已加载并尝试重新加载。如果没有,它会导入模块。但是,我认为事件与绑定事件的初始脚本正在运行的当前运行环境无关。我在代码下面列出了两个问题:

问题:1)当 .psm1 文件更改时,事件运行两次(一次保存文件)

2) 即使它运行重新加载/导入命令,它也必须在不同的环境中运行,因为它们永远不会被加载。但是所有输出都会转到脚本绑定事件的当前运行环境。

就像我提到的,我确信代码块与当前会话没有关联。

0 投票
1 回答
307 浏览

powershell - 如何为定制模块中定义的 powershell 函数定义更多通用参数?

我正在编写一个 powershell 模块来与 AWS 交互。大多数函数都需要接受参数,这些参数是要使用的凭据-awsAccessKeyId和.awsSecretKeycredentialsFile

将这些参数复制/粘贴到模块中的每个函数变得越来越枯燥。

有没有办法声明这些是CommonParameters用于模块导出的函数集?

另外,有没有办法提取通用(即重复的)参数集处理开关语句,以便所有需要它的函数都可以调用它?

这是一个示例函数:

我想提取参数 2-4 包括到CommonParameters,然后将 switch 块提取到一些常用功能。

0 投票
6 回答
136147 浏览

sql - 如何使用powershell执行.sql文件?

我有一个 。sql文件。我正在尝试通过 Powershell 脚本传递连接字符串详细信息并调用.sql文件。

我正在搜索并想出了一个与Invoke-sqlcmd. 当我试图找到一个对应于 SQL 的模块时,我没有在我的机器中找到任何一个。

我应该在我的机器上安装任何东西(机器已经有 SQL Server Management Studio 2008 R2)来获取模块,还是有什么简单的方法可以.sql使用 Powershell 执行文件?

0 投票
4 回答
1429 浏览

powershell - 我可以从 Export-ModuleMember 中排除单个函数吗?

我在 PowerShell 脚本模块中定义了大量函数。我想使用Export-ModuleMember -Function *,但我只想排除一个功能。排除这一项功能比列出所有包含的功能更容易。有没有办法做到这一点?