复制用户配置文件
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 访问了这些属性,它给出了目录的完整路径。
我正在尝试从所有用户配置文件中复制选定的文件夹,但显然做错了。你能给我指出正确的方向吗?
$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 访问了这些属性,它给出了目录的完整路径。