如何从所有windows用户appdataRoaming中复制特定文件



我需要从每个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 Directorywith-Force返回具有给定路径的预先存在的目录或创建它。

相关内容

  • 没有找到相关文章

最新更新