我创建了一个DSC资源来复制某个源的Modules目录.我正在测试它在我的环境中进行更广泛的部署.资源确实很好,确保所有文件都存在,并且它们与源内容相匹配,到目前为止一直很好......
问题是这样的; 我想确保如果目标或目标中有任何其他文件,则删除它们的文件夹.
这是我的代码:
Configuration TestRun
{
Param
(
$ComputerName = 'Localhost'
)
Node $ComputerName
{
File LoadModules
{
Ensure = 'Present'
Type = 'Directory'
Force = $true
Recurse = $true
SourcePath = "C:\git\Modules"
DestinationPath = 'C:\users\Jason\Documents\WindowsPowerShell\Modules'
Checksum = "SHA-256"
MatchSource = $true
}
}
}
Run Code Online (Sandbox Code Playgroud)
在第一次运行配置后,我一直在目的地目录中创建一个名为Deleteme.flag的文件进行测试.到目前为止,我还没有运气实际被删除.
我尝试添加一个额外的文件提供程序要求,以在运行之前删除该目录:
File RemoveModules
{
Ensure = 'absent'
Type = 'Directory'
Force = $true
Recurse = $true
DestinationPath = 'C:\users\Jason\Documents\WindowsPowerShell\Modules'
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这失败并出现以下错误:
关键属性组合'C:\ users\Jason\Documents\WindowsPowerShell\Modules'与节点'Localhost'中资源'File'的键'DestinationPath'重复.请确保关键属性对于节点中的每个资源都是唯一的.
无论如何,我想用文件资源来做,但显然,使用脚本提供程序或其他一些自定义资源很容易做到这一点.在此先感谢您的帮助!