我已按照Powershell.org DSC Book中的说明设置了用于DSC的http Pull服务器(Windows 2012服务器)。我设置了http Pull Server,然后制作了一个要拉的配置,然后设置我的节点的LCM来拉动并运行配置。
我可以在任务计划程序/ Microsoft / Windows /所需状态配置下的节点上看到计划任务,因此我至少知道某些工作。但是,我的配置没有运行。当我查看应用程序&svcs / Microsoft / Windows /所需状态配置/操作日志下的事件日志时,我看到以下事件:
Job {E0B6977A-E34F-4EDD-8455-E555063CD3DD} :
This event indicates that failure happens when LCM is trying to get the configuration from pull server using download manager WebDownloadManager. ErrorId is 0x1. ErrorDetail is The attempt to get the action from server http://pullserver.local:8080/PSDSCPullServer/Action(ConfigurationId='adaba4f6-b2b6-420d-a1dd-3714106451d6')/GetAction returned unexpected response code InternalServerError.
当我手动点击该URL时,在启用CustomErrors后,出现以下错误:
Exception Details: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Isam.Esent.Interop, Version=6.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
我尝试使用谷歌搜索此错误(没有运气),我无法找到有关此DLL的有用信息。它看起来应该与Windows的某些部分一起出现,但我不能在我的系统上看到它。我不愿意从其中一个" DLL Downloader"下载它。位点。
为什么DSC Pull Server似乎需要这个DLL并且我没有它的任何想法?
答案 0 :(得分:5)
似乎xPSDesiredStateConfiguration中的PSDSCPullServer资源默认使用Esent作为数据库提供程序,该程序仅适用于Windows 8.1(不是Server 2012)。我找到了一些文档here,其中包含一些我可以复制的代码。我只需编辑我的pull服务器的web.config并更改它:
<add key="dbprovider" value="ESENT" />
<add key="dbconnectionstr" value="C:\Program Files\WindowsPowerShell\DscService\Devices.edb" />
用这个:
<add key="dbprovider" value="System.Data.OleDb" />
<add key="dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\WindowsPowerShell\DscService\Devices.mdb;"/>
原始配置试图指向Devices.edb(我的系统中不存在,.mdb确实存在)这一事实进一步证明了一些时髦的事情。
答案 1 :(得分:1)
你用过什么方法?资源工具包或手动步骤中的xPSDesiredConfiguration模块?我自己没有通过DSC书。所以,我不知道他们推荐什么。
Microsoft.Isam.Esent.Interop程序集是ESE数据库提供程序。但是,您只需将此提供程序用于Blue OS(Windows 8.1)。您使用哪种操作系统用于Pull Server?对于除Blue OS之外的所有受支持的操作系统,您应该将jet提供程序用于devices.mdb。