我正在尝试应用使用已安装模块中的资源的 DSC 配置。但是,当我运行 时Start-DscConfiguration
,出现此错误:
PowerShell DSC 资源 ******** 在 PowerShell 模块路径中不存在,也未注册为 WMI DSC 资源。
+ CategoryInfo : InvalidOperation: (root/Microsoft/...gurationManager:String) [],CimException
+ FullyQualifiedErrorId : DscResourceNotFound
但是,当我登录服务器并运行时Get-DscResource
,缺少的资源是那里。
为什么DSC找不到资源?
答案1
我的本地计算机和服务器之间的 DSC 资源所属模块的版本不同。在我的本地计算机上,我的配置被转换为 MOF 文件,我使用的是版本 2.2.0(为简洁起见,代码被删减):
instance of ******** as $********1ref
{
ModuleName = "********";
ModuleVersion = "2.2.0";
};
但是服务器有2.1.0版本:
> Get-Module -ListAvailable
Directory: C:\Program Files\WindowsPowerShell\Modules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 2.1.0 ******** ********
此特定模块可在PowerShell 库。呼叫Update-Module
将最新版本发送到我的服务器上。我也可以降级我的本地计算机。
答案2
我遇到了同样的问题……结果发现我的问题不是模块版本不匹配,而是 Powershell 版本不匹配。我的工作站是版本 5,但终端是版本 4(出厂时为 2012 R2)。
在远程服务器上安装 WMF 5.1 后,它使用 xWebAdministration 模块识别并安装 IIS。
在此之前,它抱怨找不到它。路径变量在另一个配置的 Web 服务器上是相同的。唯一的区别是 Powershell 版本。