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 命令运行时不会创建凭据。

4

2 回答 2

7

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

于 2015-11-23T20:28:27.190 回答
5

使用模块时的一个方便提示:&.具有可能未记录的功能。使用任何一种方法,您都可以提供两个参数,第一个是模块引用(来自 get-module 或类似的),第二个是脚本。使用模块引用参数,脚本将在模块的上下文中运行。例如:

& $myMod {$usa_cred} 

$use_cred即使尚未导出,也会输出 的值。这对于调试脚本很有用。模块也可以有嵌入式模块& $myMod {gmo}并将列出这些子模块。通过嵌套&或者.您可以访问子模块上下文。

于 2015-11-23T22:05:06.177 回答