【问题标题】:Powershell or cmd - How to search for a file on client and replace with a different file on network share?Powershell 或 cmd - 如何在客户端搜索文件并替换为网络共享上的不同文件?
【发布时间】:2017-11-10 13:09:48
【问题描述】:

我们希望在升级到 Windows 10 Pro v. 1607 时替换所有配置文件的 defaultlayouts.xml。这将通过 SCCM 站点范围完成。我们配置了新的 layoutmodification.xml 并准备好部署,但是由于客户端计算机上用户的变化,我们正在努力将其推送到所有配置文件。部署到“默认”配置文件没有问题。

defaultlayouts.xml 位于:C:\Users\johndoe\AppData\Local\Microsoft\Windows\Shell

变量将是 johndoe。

客户端上可能存在多个用户的配置文件,因此我们需要在“c:\users”文件夹中搜索每个用户配置文件中的 defaultlayouts.xml。

如果文件存在于我们要删除的任何配置文件中,则从网络共享复制 layoutmodification.xml。

我有脚本、powershell 和 SCCM 方面的经验。任何想法、想法、cmets 和建议将不胜感激。

谢谢!

【问题讨论】:

    标签: powershell cmd scripting sccm


    【解决方案1】:

    您可以在用户名部分的路径中使用通配符,它​​将搜索每个可用的用户。所以,你可以这样做:

    gci C:\Users\*\AppData\Local\Microsoft\Windows\shell\defaultlayouts.xml | % {
    
        move $_.fullname "$($_.fullname)_bak"
        copy sourcelocation $_.fullname
        #alternatively to copy, you could do something like call a download if it's stored on a intranet site for example
    
    }
    

    【讨论】:

    • 假设它只是通过 url Invoke-WebRequest -Uri www.filestoredhere.com -OutFile $_.fullname 提供的,还有其他方法可以更快地下载文件,但对于一个小的 .xml 这应该没问题
    【解决方案2】:

    在 C:\Users 中查找所有 defaultlayouts.xml 文件。然后删除每个项目并从网络共享中复制 layoutmodification.xml 文件。

    Get-ChildItem C:\Users\*\AppData\Local\Microsoft\Windows\shell\defaultlayouts.xml  | ForEach-Object {
        Remove-Item $_.FullName
        Copy-Item \\server\layoutmodification.xml  $(Split-Path $_.FullName)
    }
    

    编辑:更改为通配符路径 -> C:\Users*\AppData\Local\Microsoft\Windows\shell\defaultlayouts.xml 从 C:\Users\ -recurse

    谢谢诺亚斯帕克斯

    【讨论】:

    • 递归 C:\users 将花费非常长的时间,而不是在路径的更改部分中使用通配符来定位您想要的文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多