问题
Another way to phrase the question less specifically: What is the correct way to 'reset' the DSC processes on a target machine?
I've created a DSC configuration that I'm iterating on right now, and I am adding new Package configuration which I've gotten wrong. I determined that by forgetting to supply the /quiet argument to an MSI installer in a Package block I can cause the Start-DscConfiguration cmdlet to 'hang'.
At the onset of this 'hang' I stop the DSC configuration operation on my local machine and attempt to correct the configuration problem (by adding the /quiet argument in my example) then I restart the DSC operation. Now I am seeing the following for my remote machines during the operation:
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
Unfortunately, visiting the remote PC being configured I see a similar error message, and rebooting the PC doesn't seem to rectify the error.
I've seen some posts online regarding this problem, and the three I've found thus far suggest:
- "Just wait a while and it will resolve itself", which hasn't worked for me (maybe I'm impatient...). Not a tenable long-term solution.
- "Delete all local .mof files and try again", which hasn't worked for me either.
- Stop all processes with 'wmi' in the name and restart the winrm service on the target machine(s). This has gotten me unblocked, but I am hopeful there is a better way to do this. (If I don't hear a better method in the next few days I'll answer this myself with this procedure to get the results required).
回答1:
You could also try executing the start-dscconfiguration command with the -Force option
Start-DscConfiguration -Force ...
回答2:
I've found the following works pretty well to reset DSC. Note this will delete the local configuration, so you will need to re-apply the machinename.meta.mof file.
#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
At this point you have a clean system ready to be configured using Set-DscLocalConfigurationManager
and updated using Update-DscConfiguration -Wait -Verbose -CimSession machinename
So far the only thing this hasn't fixed is a corrupted $env:psmodulepath or missing scheduled tasks for Consistency/Reboot checks. Update: According to this item on connect the scheduled tasks for Consistency/Reboot were removed in the WMF 5.0 February preview.
来源:https://stackoverflow.com/questions/25877068/how-do-i-resolve-cannot-invoke-the-sendconfigurationapply-method-when-perform