Powershell 导入模块在脚本中不起作用

Powershell 导入模块在脚本中不起作用

我需要为我的某个脚本导入 ActiveDirectory 模块。当我从命令行执行此操作时,运行

Import-Module -Name ActiveDirectory
./script.ps1

一切都运行顺利。

但是,如果将 import 语句放在脚本的顶部并仅运行脚本,而不从命令行导入,则会导致模块根本无法导入,从而无法识别模块内的这个类:
Unable to find type [Microsoft.ActiveDirectory.Management.ADUser]

从 VS 代码调试器运行脚本时不会出现此问题。为什么会发生这种情况?

答案1

我不得不深入挖掘 C:\Windows\WinSxS 来获取所需的 DLL。

DLL:

微软活动目录管理.dll

微软活动目录管理资源库

文件夹:

amd64_microsoft.activedirectory.management_31bf3856ad364e35_10.0.14393.4880_en-us_74aaa3f6f858fbf7 amd64_microsoft.activedirectory.management_31bf3856ad364e35_10.0.14393.4880_none_8e0f8779d0e8e934

指示:

获得 dll 后,将其暂存于 C:\windows\system32\windowspowershell\v1.0\modules\activedirectory

运行类似

cd C:\windows\system32\windowspowershell\v1.0\modules\activedirectory

导入模块 .\Microsoft.ActiveDirectory.Management.dll

导入模块 .\Microsoft.ActiveDirectory.Management.resources.dll

#reimport ActiveDirectory;即使你已经这样做了

导入模块 ActiveDirectory

运行你的脚本。应该可以工作

笔记:

在我的测试中,将 dll 暂存在 ActiveDirectory 中并仅导入 ActiveDirectory 模块对我来说不起作用。我必须逐个导入;一个接一个。如果您在脚本中执行此操作,请在中间添加一个 Start-Sleep

相关内容