Powershell:将配置文件从一个位置复制到另一个位置

Powershell:将配置文件从一个位置复制到另一个位置,powershell,Powershell,试图在profiles文件夹上迭代以将其桌面复制到新位置,但无法正确地将迭代拼凑在一起 get-childitem -path c:\users\*\desktop\ ` | ForEach-Object { Copy-Item $_ -Force -Destination D:\Users\*\ } 那么是这样的吗 Get-ChildItem -Path c:\users | ForEach-Object{ Copy-Item "$($_.FullName)\Desktop" -Fo

试图在profiles文件夹上迭代以将其桌面复制到新位置,但无法正确地将迭代拼凑在一起

get-childitem -path c:\users\*\desktop\ `
| ForEach-Object { Copy-Item $_ -Force -Destination D:\Users\*\ }

那么是这样的吗

Get-ChildItem -Path c:\users | ForEach-Object{
    Copy-Item "$($_.FullName)\Desktop" -Force -Destination "D:\Users\$($_.Name)\Desktop"
}
让它知道文件夹中的用户名是什么(可能需要省略一些用户,如管理员)。然后使用收集的文件夹名称(在循环中由
$\uName
表示),我们可以使用它来寻址源桌面和目标桌面。警告:这不会对路径验证执行任何错误检查。这样做很容易出错,因为您无法保证目标中存在文件夹

可以用这样的方式来解决这个问题:

Get-ChildItem -Path c:\users -Exclude "public","administrator" | ForEach-Object{
    $sourceDesktop = "$($_.FullName)\Desktop"
    $targetDesktop = "D:\Users\$($_.Name)\Desktop"


    If(((Test-Path $sourceDesktop,$targetDesktop) -eq $false).Count -gt 0){
        Copy-Item $sourceDesktop -Destination $targetDesktop -Force
    }
}
((测试路径$sourceDesktop,$targetDesktop)-eq$false.Count-gt 0)
如下所示

  • 测试路径
    将为提供的所有文件夹返回一个
    True
    `False`数组
  • 如果任何测试返回false,则至少有一个文件夹不存在,因此我们不应尝试传输
    还有一个排除部分,如果您选择删除,可以将其删除

    很好,马特,谢谢你的帮助!