Author Posts

May 5, 2016 at 10:29 am

I have the following desired state configuration script with a script resource referencing a module I'm using. The error I get is that in the test block, Get-NTFSAccess is not recognized. What's rude about this is that in the ISE, it's not only recognized, it autocompletes the function name and parameters for me. Could this be a scope issue?
import-module NTFSSecurity -verbose
Configuration DCConfig{
param ($CompName)

Import-DscResource -ModuleName PSDesiredStateConfiguration

import-module NTFSSecurity -verbose

Node $CompName{

Script Check_C_NTFSPerms {

GetScript= {
Get-NTFSAccess -Path c:\ -Account "BUILTIN\Users" | Select-Object -ExpandProperty AccessRights
}

SetScript = {
Remove-NTFSAccess -Path c:\ -Account "BUILTIN\users" -AccessRights AppendData -PassThru

Remove-NTFSAccess -Path c:\ -Account "BUILTIN\users" -AccessRights CreateFiles -PassThru
}

TestScript = {
if ((Get-NTFSAccess -Path c:\ -Account "BUILTIN\Users" | Select-Object -ExpandProperty AccessRights) -notlike "ReadAndExecute, Synchronize")
{$False} else {$True}
}
}

May 5, 2016 at 10:30 am

Where is the module installed? If it's in your Documents folder, DSC won't see it; you'll need to put it in a system-wide location (typically Program Files\WindowsPowerShell\Modules).

May 5, 2016 at 10:59 am

Thank you, that was the problem! Since I'm using a push method and not pull, the target server could not pull the module from my source server. When I copied the module to the target server's modules directory, it worked fine.

Thanks again!