I am having an issue enrolling my nodes in Azure DSC the nodes enroll ok but that’s it I can’t pull the config and trying to run Update-DSCConfiguration results in the error below. I found a post somewhere saying Deleting C:\Windows\System32\Configuration\DSCEngineCache.mof could possibly resolve the issue but I am not having any luck.
The nodes were previously connected to an on prem pull server as well as most recently configured with some Push configs. all of them are powershell 5.0. Any help troubleshooting this would be appreciated.
Update-DscConfiguration -Wait -Verbose
VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' = PerformRequiredConfigurationChecks,'className' = MSFT_DSCLocalConfigurationManage
r,'namespaceName' = root/Microsoft/Windows/DesiredStateConfiguration'.
VERBOSE: An LCM method call arrived from computer with user sid ,
The specified Property does not exist.
+ CategoryInfo : MetadataError: (root/Microsoft/...gurationManager:String) [], CimException
+ FullyQualifiedErrorId : MI RESULT 12
+ PSComputerName : localhost
VERBOSE: Operation 'Invoke CimMethod' complete.
VERBOSE: Time taken for configuration job to complete is 2.096 seconds
Here is the Script I am using to register the nodes with:
Param(
[String]$ServerURL = "",
[String]$AzureKey = "",
[Switch]$Force = $true
)
[DscLocalConfigurationManager()]
Configuration DscMetaConfigs
{
param
(
[Parameter(Mandatory = $True)]
[String]$RegistrationUrl,
[Parameter(Mandatory = $True)]
[String]$RegistrationKey,
[Parameter(Mandatory = $True)]
[String[]]$ComputerName,
[Int]$RefreshFrequencyMins = 1440,
[Int]$ConfigurationModeFrequencyMins = 1440,
[String]$ConfigurationMode = "ApplyAndMonitor",
[String]$NodeConfigurationName,
[Boolean]$RebootNodeIfNeeded = $False,
[String]$ActionAfterReboot = "ContinueConfiguration",
[Boolean]$AllowModuleOverwrite = $true,
[Boolean]$ReportOnly
)
if (!$NodeConfigurationName -or $NodeConfigurationName -eq "") {
$ConfigurationNames = $null
}
else {
$ConfigurationNames = @($NodeConfigurationName)
}
if ($ReportOnly) {
$RefreshMode = "PUSH"
}
else {
$RefreshMode = "PULL"
}
Node $ComputerName
{
Settings {
RefreshFrequencyMins = $RefreshFrequencyMins
RefreshMode = $RefreshMode
ConfigurationMode = $ConfigurationMode
AllowModuleOverwrite = $AllowModuleOverwrite
RebootNodeIfNeeded = $RebootNodeIfNeeded
ActionAfterReboot = $ActionAfterReboot
ConfigurationModeFrequencyMins = $ConfigurationModeFrequencyMins
}
if (!$ReportOnly) {
ConfigurationRepositoryWeb AzureAutomationDSC {
ServerUrl = $RegistrationUrl
RegistrationKey = $RegistrationKey
ConfigurationNames = $ConfigurationNames
}
ResourceRepositoryWeb AzureAutomationDSC {
ServerUrl = $RegistrationUrl
RegistrationKey = $RegistrationKey
}
}
ReportServerWeb AzureAutomationDSC {
ServerUrl = $RegistrationUrl
RegistrationKey = $RegistrationKey
}
}
}
# Create the metaconfigurations
# TODO: edit the below as needed for your use case
$Params = @{
RegistrationUrl = $ServerURL;
RegistrationKey = $AzureKey ;
ComputerName = @("$env:Computername");
NodeConfigurationName = 'registerdsc.localhost';
RefreshFrequencyMins = 1440;
ConfigurationModeFrequencyMins = 1440;
RebootNodeIfNeeded = $false;
AllowModuleOverwrite = $True;
ConfigurationMode = 'ApplyAndMonitor';
ActionAfterReboot = 'ContinueConfiguration';
ReportOnly = $False; # Set to $True to have machines only report to AA DSC but not pull from it
}
$currentserverurl = (Get-DscLocalConfigurationManager).ConfigurationDownloadManagers.ServerUrl
If (!($currentserverurl -eq $ServerURL) -or $Force) {
Write-Verbose "Configuring LCM to $ServerURL"
Write-Verbose "Starting Azure DSC Config"
DscMetaConfigs @Params -OutputPath C:\source\DSC
Set-DscLocalConfigurationManager -ComputerName $env:computername -Path C:\Source\DSC -Force -Verbose -ErrorAction Continue
Write-Host "Configuration Complete Trying to update:"
Start-Sleep 60
Update-DscConfiguration -ErrorAction SilentlyContinue -Wait
Write-Host "Configuration Succesfull"
}
else {
Write-Verbose "Server URL is already set correctly."
}