我需要为我的某个脚本导入 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