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

时间:2017-06-08 17:29:31

标签: powershell cmd scripting sccm

我们希望在升级到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方面的经验。任何想法,想法,评论和建议将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

}

答案 1 :(得分:1)

在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