【问题标题】:DSC File Resource File not copying PDB filesDSC 文件资源文件不复制 PDB 文件
【发布时间】:2015-11-10 20:21:47
【问题描述】:

我正在使用 DSC 文件资源将应用程序服务器更新为最新版本。除了 .PDB 文件外,这很有效。这些永远不会更新。我只用一个文件就重现了这种行为。这是一个示例配置

Configuration FileTestConfiguration {
    param($HostName)

    Node $HostName {
        File AppDirectory {
        SourcePath = "c:\temp\dsc\source"
        DestinationPath = "c:\temp\dsc\target"
        Type = 'Directory'
        Checksum ='SHA-256'
        Recurse = $true
        MatchSource = $true
    }
    File PdbFile {
        SourcePath = "c:\temp\dsc\pdbSource\MyNetHelpers.pdb"
        DestinationPath = "c:\temp\dsc\pdbTarget\MyNetHelpers.pdb"
        Checksum ='SHA-256'
        Recurse = $true
        MatchSource = $true
    }
}

}

运行以上配置后,目录目标将反映目录源,除了 .pdb 文件。与 PdbFile 块中的单个文件表现出相同的行为

我已经通过重命名文件运行了许多测试,但这没有任何影响。好像和.PDB格式有关。

有没有人看到这种行为,知道是什么原因造成的或者知道上面的配置是否不正确?

【问题讨论】:

  • 非常有趣。如果您重命名同一个 PDB 文件以具有不同的扩展名怎么办?如果你创建一个 .txt 文件并用 .pdb 命名会怎样?
  • 是的,做到了。无论名称如何,pdb 内容文件都不会被覆盖,而其他文件会覆盖。
  • 很棒的信息;如果您更改校验和(或根本不使用)怎么办?
  • 关于无校验和的好想法。我已经尝试过所有其他校验和算法,但它们并不重要。我确实验证了文件校验和也不同。查看没有校验和的文档默认匹配名称,这是不好的。另一种选择是将值 modifiedDate 用于校验和。我只是对此进行了测试,这将复制所有文件,包括 PDB 文件。使用校验和算法的 PDB 似乎有不同的行为
  • 可能是 Microsoft Connect 错误的良好候选者。我想不出为什么校验和会知道不同的文件类型(更不用说关心了)。很奇怪;我肯定会在未来的配置中注意这一点。我想它一定会影响其他一些文件类型。

标签: powershell dsc


【解决方案1】:

我只是偶然发现了这样一个问题。对我来说完美的解决方法:Archive

效果很好,至少对我来说是这样

示例:

Archive ArchiveSourcezip
{
    Ensure = 'Present'
    Path = '\\Source\Directory\source.zip'
    Destination = 'C:\ExtractionPath'
}

Log LogExample
{
    Message = 'Archive source.zip was transferred.'
}

编辑: 另一种选择:使用 modifiedDateChecksum 测试!这似乎是最可靠的。

File ScriptsPowerShellPath {
    Ensure = 'Present'
    Type = 'Directory'
    Recurse = $true
    SourcePath = '\\Server\share'
    DestinationPath = $env:SystemDrive+'\directrory\target'
    Force = $true
    Checksum = 'modifiedDate'
    MatchSource = $true
    DependsOn = '[File]ScriptsPath'
}

您可能还想使用日志资源:

Log LogFileScriptsPowerShellPath {
    Message = 'Created and filled ScriptsPowerShellPath'
    DependsOn = '[File]ScriptsPowerShellPath'
}

这可能很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多