Powershell使用Import-Module运行脚本

Ace*_*ity 5 powershell powershell-module

我为我的管理组创建了一个模块,其中包含一些自动执行我们常用程序的功能(将管理员添加到远程计算机,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
    }
Run Code Online (Sandbox Code Playgroud)

手动运行此工作正常,但从Import-Module命令运行时不会创建凭据.

bri*_*ist 7

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


Χpẘ*_*Χpẘ 5

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

& $myMod {$usa_cred} 
Run Code Online (Sandbox Code Playgroud)

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