Powershell DSC Pull Server выдает внутреннюю ошибку — Microsoft.Isam.Esent.Interop не найден

Я следовал инструкциям, приведенным в DSC Book на Powershell.org, чтобы настроить http Pull Server (Windows 2012 server) для использования с DSC. Я настроил HTTP Pull Server, затем создал конфигурацию для получения, а затем настроил LCM моего узла для получения и запуска конфигурации.

Я вижу запланированную задачу на узле в разделе Планировщик заданий/Microsoft/Windows/Desired State Configuration, поэтому я знаю, что по крайней мере что-то сработало. Однако моя конфигурация не запускается. Когда я просматриваю журналы событий в разделе Apps&Svcs/Microsoft/Windows/Desired State Configuration/Operational Log, я вижу следующее событие:

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.

Я попытался найти эту ошибку в Google (не повезло) и не могу найти полезную информацию об этой DLL. Похоже, что он должен поставляться с некоторыми частями Windows, но я не вижу его в своей системе. Я не хочу загружать его с одного из этих сайтов «DLL Downloader».

Любые идеи, почему для DSC Pull Server требуется эта DLL, а у меня ее нет?


person Jay Spang    schedule 16.06.2014    source источник


Ответы (2)


Похоже, что ресурс PSDSCPullServer из xPSDesiredStateConfiguration по умолчанию использует Esent в качестве поставщика базы данных, который работает только с Windows 8.1 (не с Server 2012). Я нашел некоторую документацию здесь с некоторым кодом, который я мог скопировать. Мне просто нужно было отредактировать 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), является еще одним свидетельством того, что происходит что-то странное.

person Jay Spang    schedule 17.06.2014

Какой метод вы использовали? Модуль xPSDesiredConfiguration из комплекта ресурсов или ручные действия? Сам я не читал книгу DSC. Так что я не знаю, что они рекомендуют.

Сборка Microsoft.Isam.Esent.Interop является поставщиком базы данных ESE. Однако использовать этого провайдера нужно только для Blue OS (Windows 8.1). Какую ОС вы используете для Pull Server? Для всех поддерживаемых ОС, кроме ОС Blue, вы должны использовать провайдера Jet для devices.mdb.

person ravikanth    schedule 17.06.2014
comment
Я использовал ресурсы PSDSCPullServer и PSDSCComplianceServer из упомянутого вами модуля. Это сервер Windows 2012. Я понятия не имею, как был установлен поставщик базы данных, я предполагаю, что он был установлен ресурсом. Где я могу изменить это? - person Jay Spang; 17.06.2014
comment
Ваш ответ определенно привел меня в правильном направлении. Я опубликовал свой собственный ответ вместе с подробностями о том, что мне пришлось изменить, чтобы заставить его работать. Я надеюсь, вы не чувствуете, что я пытался украсть ваш кредит здесь! - person Jay Spang; 18.06.2014
comment
НП! это то, что я имел в виду. В модуле xPSDesiredStateConfiguration есть ошибка. - person ravikanth; 18.06.2014