Powershell加载二进制模块

时间:2019-09-07 15:14:59

标签: powershell

我几乎没有尝试将Powershell脚本放入模块中。在同一模块中,我还打算加载一个用于生成令牌的c#dll。 DLL使用System.Management.Automation。

enter image description here

#content of asr.psm1
Import-Module ".\tokengenerator\PowershellTokenGenerator.dll"
Get-ChildItem $psscriptroot\*.ps1 -Recurse | ForEach-Object { . $_.FullName }

文件夹令牌生成器包含用于生成OAuth2.0令牌的dll。如何在同一模块下加载powershell模块和C#cmdlet。但是,当我尝试加载模块时,出现以下错误。

Import-Module D:\repo\src\aadsr\setup\asr.psm1

Import-Module : The specified module '.\tokengenerator\PowershellTokenGenerator.dll' was not loaded because no valid module file was found in any module directory. At D:\repo\src\aadsr\setup\asr.psm1:1 char:1
+ Import-Module ".\tokengenerator\PowershellTokenGenerator.dll"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (.\tokengenerato...enGenerator.dll:String) [Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

1 个答案:

答案 0 :(得分:3)

使用:

Import-Module "$PSScriptRoot\tokengenerator\PowershellTokenGenerator.dll"

以确保找到相对于 script模块的*.psm1)位置的DLL,反映在自动变量$PSScriptRoot中。

相比之下,如果您使用Import-Module ".\...",则会相对于当前位置.)查找DLL,无论它是什么。