Powershell:将配置文件从一个位置复制到另一个位置
Powershell: copying profiles from one location to another
尝试迭代配置文件文件夹以将其桌面复制到新位置,但无法正确拼凑迭代。
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"
}
让它找出文件夹中的用户名(可能需要省略一些用户,如管理员)。然后使用收集到的文件夹名称(由循环内的 $_.Name
表示)我们可以使用它来寻址源桌面和目标桌面。警告这不会对路径验证进行任何错误检查。这样的事情很容易出错,因为你不能保证目标中存在一个文件夹。
可以用这样的方式解决这个问题:
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
}
}
(((Test-Path $sourceDesktop,$targetDesktop) -eq $false).Count -gt 0)
分解成这样
Test-Path
将为提供的所有文件夹 returning 一个 True
`False` 数组。
- 如果任何测试 return 为假,则至少有一个文件夹不存在,因此我们不应尝试传输。
还有一个排除部分,如果您愿意,可以将其删除。
尝试迭代配置文件文件夹以将其桌面复制到新位置,但无法正确拼凑迭代。
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"
}
让它找出文件夹中的用户名(可能需要省略一些用户,如管理员)。然后使用收集到的文件夹名称(由循环内的 $_.Name
表示)我们可以使用它来寻址源桌面和目标桌面。警告这不会对路径验证进行任何错误检查。这样的事情很容易出错,因为你不能保证目标中存在一个文件夹。
可以用这样的方式解决这个问题:
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
}
}
(((Test-Path $sourceDesktop,$targetDesktop) -eq $false).Count -gt 0)
分解成这样
Test-Path
将为提供的所有文件夹 returning 一个True
`False` 数组。- 如果任何测试 return 为假,则至少有一个文件夹不存在,因此我们不应尝试传输。
还有一个排除部分,如果您愿意,可以将其删除。