Как решить проблему Не удается вызвать метод SendConfigurationApply. при выполнении Start-DscConfiguration?

Другой способ сформулировать вопрос менее конкретно: как правильно «сбросить» процессы DSC на целевой машине?

Я создал конфигурацию DSC, над которой сейчас работаю, и добавляю новую конфигурацию пакета, в которой ошибся. Я определил, что, забыв указать аргумент /quiet для установщика MSI в блоке Package, я могу вызвать «зависание» командлета Start-DscConfiguration.

В начале этого «зависания» я останавливаю операцию настройки DSC на своем локальном компьютере и пытаюсь исправить проблему конфигурации (путем добавления аргумента /quiet в моем примере), а затем перезапускаю операцию DSC. Теперь я вижу следующее для моих удаленных машин во время операции:

Cannot invoke the SendConfigurationApply method. The PerformRequiredConfigurationChecks method is in progress and must return before SendConfigurationApply can be invoked.
    + CategoryInfo          : NotSpecified: (root/Microsoft/...gurationManager:String) [], CimException
    + FullyQualifiedErrorId : MI RESULT 1
    + PSComputerName        : REMOTEMACHINE20

К сожалению, при посещении настраиваемого удаленного ПК я вижу аналогичное сообщение об ошибке, и перезагрузка ПК, похоже, не устраняет ошибку.

Я видел несколько сообщений в Интернете об этой проблеме, и три, которые я нашел до сих пор, предлагают:

  1. Просто подождите некоторое время, и это разрешится само собой, что не сработало для меня (может быть, я нетерпелив...). Ненадежное долгосрочное решение.
  2. Удалите все локальные файлы .mof и повторите попытку, у меня это тоже не сработало.
  3. Остановите все процессы, в имени которых есть wmi, и перезапустите службу winrm. на целевой машине(ах). Это разблокировало меня, но я надеюсь, что есть лучший способ сделать это. (Если я не узнаю о лучшем методе в ближайшие несколько дней, я сам отвечу на этот вопрос с помощью этой процедуры, чтобы получить требуемые результаты).

person d3r3kk    schedule 16.09.2014    source источник
comment
У меня была та же проблема, и я нашел решение 3, которое сработало и для меня. Никто из других этого не сделал.   -  person briantist    schedule 17.09.2014


Ответы (2)


Вы также можете попробовать выполнить команду start-dscconfiguration с параметром -Force.

Start-DscConfiguration -Force ...
person Inchara    schedule 18.02.2015
comment
С тех пор, как я опубликовал этот оригинальный вопрос, я многому научился в DSC. Это действительно правильный ответ на этот вопрос. Когда появился переключатель -Force? (Не имеет значения, но было бы хорошо иметь его здесь для потомков в будущем). - person d3r3kk; 27.03.2015

Я обнаружил, что следующее работает очень хорошо для сброса DSC. Обратите внимание, что это удалит локальную конфигурацию, поэтому вам нужно будет повторно применить файл machinename.meta.mof.

#Remove all mof files (pending,current,backup,MetaConfig.mof,caches,etc)
rm C:\windows\system32\Configuration\*.mof*
#Kill the LCM/DSC processes
gps wmi* | ? {$_.modules.ModuleName -like "*DSC*"} | stop-process -force

На данный момент у вас есть чистая система, готовая к настройке с помощью Set-DscLocalConfigurationManager и обновлению с помощью Update-DscConfiguration -Wait -Verbose -CimSession machinename.

Пока что единственное, что не исправлено, — это поврежденный $env:psmodulepath или отсутствующие запланированные задачи для проверки согласованности/перезагрузки. Обновление: в соответствии с этим элементом при подключении запланированные задачи для согласованности/перезагрузки были удалены в февральской предварительной версии WMF 5.0.

person Greg Bray    schedule 27.03.2015
comment
Спасибо, после 2 часов, когда я рвал на себе волосы, ваш ответ наконец заставил DSC снова работать. - person Omni; 31.03.2016
comment
Альтернативой удалению всех файлов MOF является использование команды Remove-DscConfigurationDocument -Stage Pending -Force. Это удалит зависшую конфигурацию, которая выполняется. Кроме того, мне пришлось убить все процессы перед удалением, поскольку это не позволяло мне удалить документ, не убивая процессы. - person Vinay; 01.03.2018