我创建了一个 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
}
}
}
在第一次运行配置后,我一直在目标目录中创建一个名为 Deleteme.flag 的文件来进行测试。到目前为止,我还没有任何运气让它真正被删除。
我尝试添加额外的文件提供程序要求以在目录运行之前删除它:
File RemoveModules
{
Ensure = 'absent'
Type = 'Directory'
Force = $true
Recurse = $true
DestinationPath = 'C:\users\Jason\Documents\WindowsPowerShell\Modules'
}
不幸的是,这失败并出现以下错误:
对于节点“Localhost”中资源“文件”的键“DestinationPath”,键属性组合“C:\users\Jason\Documents\WindowsPowerShell\Modules”重复。请确保节点中每个资源的关键属性都是唯一的。
无论如何,我想用文件资源来做这件事,但显然,用脚本提供者或其他一些自定义资源来做这件事会很容易。提前感谢您的所有帮助!