Powershell或cmd-如何在客户端上搜索文件并在网络共享上替换为其他文件?

Powershell或cmd-如何在客户端上搜索文件并在网络共享上替换为其他文件?,powershell,cmd,scripting,sccm,Powershell,Cmd,Scripting,Sccm,我们希望在升级到Windows 10 Pro v时替换所有配置文件的defaultlayouts.xml。1607这将在SCCM现场范围内完成。我们已经配置了新的layoutmodification.xml并准备好进行部署,但是,由于客户端计算机上用户的变化,我们很难将其推送到所有配置文件中。部署到“默认”配置文件时没有问题 defaultlayouts.xml位于此处:C:\Users\johndoe\AppData\Local\Microsoft\Windows\Shell 变量将是john

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

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

变量将是johndoe

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

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

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


谢谢大家!

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

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

}

在C:\Users中查找所有defaultlayouts.xml文件。然后删除每个项目并从networkshare复制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 \-recurse更改为通配符路径->C:\Users*\AppData\Local\Microsoft\Windows\shell\defaultlayouts.xml


感谢Noah Sparks

递归C:\users将花费非常长的时间,而不仅仅是在路径的更改部分使用通配符来定位所需的文件。假设它仅通过url
调用WebRequest-Uri www.filestoredhere.com-OutFile$\可用。全名
有其他下载方法文件速度更快,但对于较小的.xml文件,这应该可以