首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在安装PowerShell模块后用PowerShellGet写入配置文件

在安装PowerShell模块后用PowerShellGet写入配置文件
EN

Stack Overflow用户
提问于 2020-02-03 04:44:20
回答 1查看 115关注 0票数 3

我有一个带有两个cmdlet的自定义PowerShell模块。我已经成功地,但手动部署在我的机器上。但是,我通过将二进制文件和模块清单放在一个位置,然后注册模块来部署它。我还必须手动将一个Import-Module命令写入我的“所有用户”配置文件中。

现在我确信我可以使用Publish-Module部署这个模块,但是如何让Install-ModuleImport-Module语句写入概要文件呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-12 20:55:25

从PowerShell 3.0开始,当调用来自模块的命令时,将自动导入模块。这对微软来说是一件很棒的事情;然而,它确实要求模块位于默认情况下PowerShell查找模块的位置。合乎道理。通过运行以下命令可以看到这些位置:

代码语言:javascript
复制
$env:PSModulePath -split ';'

您为什么不使用存储在上述环境变量中的路径之一?也就是说,我会将您的代码排除在“C:\Windows\System32 32.”之外。路径。其他选项更好:"C:\Program \PowerShell\Modules“(AllUsers)和"C:\Users\tommymaynard\Documents\PowerShell\Modules”(CurrentUser)。根据您的PowerShell版本/OS,这些路径可能有所不同。如果模块位于首选位置,则不需要将Import命令写入$PROFILE脚本。也许你已经知道了,但也许不知道。

您不会得到Install来写入任何$PROFILE脚本。

代码语言:javascript
复制
$PROFILE | Select-Object -Property *

反正也不是默认的。您可以编写自己的安装模块函数,该函数运行PowerShellGet的安装模块函数,包括编写各种$PROFILE脚本。问题是,您需要包含逻辑,这样如果某个人的$PROFILE脚本不是空的,并且只是附加到它,就不会吹掉它的内容。

但是,说真的,当您可以将模块放到一个PowerShell可以自己找到它的位置时,这就变成了很多工作。

编辑:我刚刚想到,您可以向$env:PSModulePath环境变量添加一个值/路径。它是一个带有分号分隔符的字符串:

代码语言:javascript
复制
$env:PSModulePath.GetType().Name

因此,看起来是这样的:

代码语言:javascript
复制
$env:PSModulePath += ';C:\Another\Path'

这一切都很棒,但你又该怎么做,对吧?它把你带回到写到所有的配置文件-脚本问题,.尽管您可以通过组策略首选项更新变量。再一次,也许最好重新定位你的模块。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60033194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档