Hybrid RefreshMode for LCM on target node

I have configured https based DSC pull server and multiple target nodes registered to this server. When I execute

Get-DscLocalConfigurationManager
on any of the target nodes I verified that RefreshMode is set as ‘PULL’. The set-up is working as expected.

There are scenarios where I’m running some configurations manually. The configurations are applied successfully to these target nodes however when I run

Get-DscLocalConfigurationManager
on target node now, it’s flipped back to ‘PUSH’ mode. This is what I used to manually apply the configurations on target node:

Start-DSCConfiguration -Path C:\Dsc\Mof -Wait -Verbose -Force

If I exclude the ‘-Force’ parameter, I get this error:

A PUSH operation was requested without -Force while configured for PULL processing.
    + CategoryInfo          : InvalidArgument: (root/Microsoft/...gurationManager:String) [], CimException
    + FullyQualifiedErrorId : MI RESULT 4
    + PSComputerName        : localhost

So does it mean that a node can either be in PUSH or PULL mode in its life time?

Thanks for your help!

So, in single-MOF mode (as opposed to Partial Configurations), the node can be configured for one or the other. If configured for PULL, it won’t accept a PUSH. You’d have to reconfigure the LCM for PUSH, push the config, and then reconfigure it again for PULL.

Got it! Looks like I need to setup Partial Configurations in my environment. Let me read more to it.
Thanks for pointers.

Well… yes. Definitely do (The DSC Book by Don Jones et al. [Leanpub PDF/iPad/Kindle] as an example), because Partials aren’t the be-all solution they can sometimes seen. They have some downsides. And you have to be careful to not try and configure the same thing in multiple partials (e.g., set it one way in a Pulled MOF, and another way in a Pushed MOF), or it’ll all fight itself like two raccoons in a bag.