![Powershell 导入模块在脚本中不起作用](https://linux22.com/image/754878/Powershell%20%E5%AF%BC%E5%85%A5%E6%A8%A1%E5%9D%97%E5%9C%A8%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我需要为我的某个脚本导入 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