使用Import-Module在Powershell中运行脚本

5
我为我的管理员组创建了一个模块,其中包含一些自动化一些常见过程的功能(添加到远程机器的管理员,C盘清理等...)
这些功能的先决条件之一是生成一系列7个凭据,每个凭据对应我们工作的每个域。
是否有办法在导入模块时运行脚本块,还是我应该将其添加到每个人的配置文件中?
一位评论者提到我可以将其添加到module.psm1文件中,但那行不通。 这是我正在尝试运行的代码。
$creds = Import-Csv [csvfile]
$key = Get-Content [keyfile]
foreach ($cred in $creds) {
    $user = $cred.User
    $password = $cred.Hash | ConvertTo-SecureString -Key $key
    $i = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user,$password
    New-Variable -Name ($cred.Domain + "_Cred") -Value $i -Force
    }

手动运行可以正常工作,但从Import-Module命令运行时无法创建凭据。
2个回答

7

任何不是函数的代码在导入模块时都会运行。


@Acerbity,你有收到任何错误信息吗?它的工作方式有什么问题? - briantist
复制那个。谢谢你的帮助。 - Acerbity
1
在使用模块时的一个小技巧:& 和 . 可能具有未记录的功能。你可以使用这两个符号来传递两个参数,第一个是模块引用(来自 get-module 或类似函数),第二个是脚本。通过模块引用参数,脚本将在模块的上下文中运行。例如:& $myMod {$usa_cred} 将输出 $use_cred 的值,即使它没有被导出。这对于调试脚本非常有用。此外,模块可以嵌入子模块,& $myMod {gmo} 将列出这些子模块。通过嵌套 & 或 .,您可以访问子模块的上下文。 - Χpẘ
@user2460798 非常棒,值得单独回答(我肯定会点赞)。 - briantist
@briantist 谢谢。我按照您的建议去做了。 - Χpẘ
显示剩余7条评论

5
当处理模块时,一个方便的技巧是: &. 具有可能未记录的功能。你可以使用其中任意一个来传递两个参数,第一个参数是模块引用(来自 get-module 或类似的方法),第二个参数是脚本。使用模块引用参数,脚本将在模块上下文中运行。所以例如:
& $myMod {$usa_cred} 

即使$use_cred没有被导出,这个命令也会输出它的值。这对于调试脚本非常有用。此外,模块可以嵌套模块,& $myMod {gmo}将列出那些子模块。通过嵌套&.可以访问子模块的上下文。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接