I was able to overcome this problem using the following code in my DSC user resource:
$ScriptBlock={ param( [String] $QueueName, [String] $Username, [String[]] $MessageQueueAccessRight, [ValidateSet("Allow","Deny")] [String] $MessageQueueAccessType ) $params = @{} $queue = Get-MSMQQueue -Name $QueueName $params.Add("InputObject",$queue) $params.Add("Username",$Username) switch ($MessageQueueAccessType) { "Allow" {$params.Add("Allow","$MessageQueueAccessRight"); Break;} "Deny" {$params.Add("Deny","$MessageQueueAccessRight"); Break;} } Set-MsmqQueueACL @params } Foreach($MessageQueueAccessRight in $MessageQueueAccessRights) { Invoke-Command -ScriptBlock $ScriptBlock -ComputerName . -Credential $DomainAdministratorCredential -ArgumentList $QueueName,$Username,$MessageQueueAccessRight,$MessageQueueAccessType }
Of course, you must use the same approach when the MSMQ queue is created by DSC. Thus, the creation of the MSMQ queue must be performed by the same account that was originally going to configure the ACL.
source share