我需要从每个windows用户复制appdataRoaming中的特定文件到c:temp"user profile"这是代码
$users = (gci $env:systemDriveusers).FullName
foreach ($user in $users) {
write-host $user
Copy-Item -Path "$userAppdataRoamingNotepad++config.xml" -Destination "C:temp$user" -Force -Recurse -ERRORACTION SILENTLYCONTINUE
}
我不知道为什么,但它看起来不支持的路径。我如何在Temp中为每个用户创建一个文件夹,我从appdataRoaming复制的文件?仅供参考:今后我将需要做相反的事情。
**这是错误:Copy-Item: the specified path format is not supported.* *
我试着在网上找到一些解决方案,但都没有成功。
$users = (gci $env:systemDriveusers).FullName
在$users
中存储完整路径,而您只希望在"C:temp$user"
另外,您需要首先确保C:temp
中存在特定于用户的目标目录,然后才能将文件复制到那里。
因此:
$users = Get-ChildItem $env:systemDriveusers # gci is short for Get-ChildItem
foreach ($user in $users) {
Write-Host $user
Copy-Item -LiteralPath "$($user.FullName)AppdataRoamingNotepad++config.xml" `
-Destination (New-Item -Type Directory -Force "C:temp$($user.Name)") `
-Force -Recurse -ERRORACTION SILENTLYCONTINUE
}
注意:
不使用
Get-ChildItem
返回的目录项的.FullName
属性,这些项按原样存储在$users
中,这允许以后选择性地访问它们的属性,即通过$user.FullName
和$user.Name
。- 将这些属性引用包含在
$(...)
(子表达式操作符)中是必要的,以便将它们嵌入到可扩展(双引号)字符串("..."
)
- 将这些属性引用包含在
New-Item
-Type Directory
with-Force
返回具有给定路径的预先存在的目录或创建它。