Quantcast
Channel: Windows PowerShell forum
Viewing all articles
Browse latest Browse all 21975

PowerShell Desired State Configuration User Resource

$
0
0

Having problems getting the DSC User Resource working.  Has anybody been able to get this resource working?  If so then I can just assume I have to bang my keyboard some more.

As I understand it, the User resource takes a Credential as its parameter, and in order to pass a credential you need to do a couple of things:

1. Set PSDscAllowPlainTextPassword = $true (disarms the error when you try to use a Credential)

2. Supply a Certificate to DSC (encrypts and decrypts the credential)

In the sample code below I am able to get the Credential object through to the resource (MSFT_UserResource.psm1).  To troubleshoot I put the following line into the psm1 file:

Write-Verbose "Password: $($Password.GetNetworkCredential().Password)"

When I run the DSC configuration I get the following in my Verbose output:

VERBOSE: [MYBOX]:                            [[User]SomeUser] Password: eXC6VFtHJ4vTRMgRBZHEWLT2CumH+3DkYXJDPmVzxWasV8lgLQRCEw7MqEspKX9D2iIU/qYleeyS2xD+

upZuB8xCwGEJm/Z/cYbYBE9WFVOV9+GEgU9XkBU2kez+impT36iASTLAokH/kWkFtu4+pIwkNGi93+hkqi1TLrKm09Vu74B37tkEkiVAMa753xLSZZ4Sgln7xsPivpYibZSHug1YDvNHuDe2rcqyTKruP

DoqIe7p1gnj523A/0Q3oPGq0AqnLrYUqV9d4gdCevi+UetOkPzH7p0tckB73bOUtl51x1y+K69gspIHUfL3zAHP+bTC7CgBLVdyZWsJK/Ht8g==

I expected the decrypted password there, but that string is the encrypted password (Base64 encoded). 

Here is the repro script I am using: 

Set-Location c:\dsccm

### Create the Credential
$cred = Get-Credential (Get-Credential hoofhearted\icemelted)
#$cred.GetNetworkCredential().Password

### Get the certificate to encrypt/decrypt the credential
$certificate = dir cert:\LocalMachine\My | where {$_.Subject -eq "CN=hoofhearted"}

### Create the Configuration
Configuration LocalConfigurationManager {    
    Node ("localhost") {  
        LocalConfigurationManager 
        {
            CertificateID = $certificate.Thumbprint            
        }
        User UserExample
        {
            Ensure   = "Present"  # To ensure the user account does not exist, set Ensure to "Absent"
            UserName = "SomeName"
            Password = $cred
        } 
    }                   
}

$Global:AllNodes=
@{
    AllNodes = @( 
                    @{  
                    NodeName                    = "localhost"
                    CertificateID               = $certificate.Thumbprint
                    PSDscAllowPlainTextPassword = $true                   
                    }
                )
}

LocalConfigurationManager -ConfigurationData $Global:AllNodes

Set-DscLocalConfigurationManager -path "C:\dsccm\LocalConfigurationManager"

###
Start-DscConfiguration -Wait -Verbose:$true -Path C:\dsccm\LocalConfigurationManager -Force 
###

BTW - I think this is a bug, so I filed a bug on Connect.  Please vote it up if you have the same problem.

UPDATE: October 21 - can repro using RTM bits of Windows Server 2012 R2


CraigMartin – Edgile, Inc. – http://identitytrench.com




Viewing all articles
Browse latest Browse all 21975

Trending Articles