复制用户配置文件

Copy userprofiles

我正在尝试从所有用户配置文件中复制选定的文件夹,但显然做错了。你能给我指出正确的方向吗?

$destination = "C:\Backup"

$folder = "Desktop",
          "Downloads",
          "Favorites",
          "Documents",
          "Music",
          "Pictures",
          "Videos" ,
          "AppData\Local\Mozilla",
          "AppData\Local\Google",
          "AppData\Roaming\Mozilla"

$computername = gc env:COMPUTERNAME
$userprofiles = Get-ChildItem "C:\Users" -Directory

foreach ($userprofile in $userprofiles) {
    Get-ChildItem "C:\Users" -Directory

    foreach ($f in $folder) {
        $BackupSource = $userprofiles  + "\" + $f
        $BackupDestination = $destination + "\" + $computername + "\" + $userprofiles + "\" + $f
        Copy-Item -ErrorAction silentlyContinue -Recurse -Path  $BackupSource -Destination $BackupDestination
    }
}

试试这个,

$destination = "C:\Backup"

$folder = "Desktop",
"Downloads",
"Favorites",
"Documents",
"Music",
"Pictures",
"Videos" ,
"AppData\Local\Mozilla",
"AppData\Local\Google",
"AppData\Roaming\Mozilla"


$computername = gc env:computername
$userprofiles = Get-ChildItem "C:\Users" -directory

foreach ($userprofile in $userprofiles){
    foreach ($f in $folder)
    {   
        $BackupSource = $userprofile.FullName  + "\" + $f
        $BackupDestination = $destination + "\" + $computername + "\" + $userprofile.Name + "\" + $f
        Copy-Item -ErrorAction silentlyContinue -recurse -Path  $BackupSource -Destination $BackupDestination
    }
}

您指的是目录本身,而不是路径。如果它不起作用,请告诉我!

--根据 OP 要求编辑--

$userprofiles = Get-ChildItem "C:\Users" -directory

此命令获取 C:\Users 下的所有 "Directory"。请注意,它获取 目录本身,而不仅仅是路径 。 $userprofiles 是一个数组,您必须使用索引(如 $userprofiles[0])或迭代它来使用它。这就是您使用 foreach ($userprofile in $userprofiles) 所做的事情。 (在您的原始代码中,您使用了数组本身的 $userprofiles,这就是它不起作用的原因)

好的,现在说说你为什么需要 $userprofile.Name。正如我所说,$userprofile 是目录本身,它具有 Name、FullName、CreationTime 等属性。我们只是通过 $userprofile.FullName 访问了这些属性,它给出了目录的完整路径。