小编Jas*_*gan的帖子

在DSC中使用文件提供程序 - 确保Destination仅包含Source中的文件

我创建了一个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'重复.请确保关键属性对于节点中的每个资源都是唯一的.

无论如何,我想用文件资源来做,但显然,使用脚本提供程序或其他一些自定义资源很容易做到这一点.在此先感谢您的帮助!

powershell dsc

5
推荐指数
1
解决办法
6430
查看次数

标签 统计

dsc ×1

powershell ×1