我们通过另一个PS脚本确定了大量不再活动的用户目录,并希望将这些用户文件夹从现有位置移动到存档位置。
我可以识别用户,并将他们输出到.csv
文件中,例如内容类似于以下内容:
E:\Shares\Users$\AbassR E:\Shares\Users$\AbbottJ ... and so on
我想使用PowerShell和robocopy
来避免长文件名限制和Windows操作系统具有的其他任何限制。
我确实找到了已修改的脚本:
GC -Path G:\Shares\ArchiveUsers$\userstomove.csv | ForEach-Object {
robocopy $_ G:\Shares\ArchiveUsers$\Watford /E /Z /R:1 /W:1 /LOG+:G:\userscopied.txt /NP
}
它会复制(不移动),但也不会在目标位置重新创建原始文件夹。似乎只能从.csv
文件中显示的文件夹复制文件,然后复制到目标存档文件夹的根目录。
如果可以将/mov
文件中标识的源文件夹移动到目标存档中具有相同名称的文件夹,这将使我的生活变得更加轻松(也许使用robocopy .csv
开关)位置)以及我们之前手动迁移过的所有其他文件夹。
答案 0 :(得分:2)
使用参数/e
已经使robocopy
递归复制目录。但是,robocopy
将源目录的内容复制到目标目录,而不是整个目录,从而有效地合并/覆盖了来自不同用户的文件。
要将源目录复制到单个目标目录,需要将这些单个目录指定为目标。要将源目录移动到目标位置,请将/e
替换为/move
。
$dst = 'G:\Shares\ArchiveUsers$\Watford'
... | ForEach-Object {
$name = [IO.Path]::GetFileName($_)
robocopy $_ "$dst\$name" /move /z /r:1 /w:1 /log+:G:\userscopied.txt /np
}
答案 1 :(得分:0)
最后,这是我最终完成工作的脚本。但是,后来确实出现了移动用户目录(例如我不是所有者)之类的用户目录的子文件夹的问题。
import * as cors from 'cors';
const corsHandler = cors({origin: true});
export const exampleFunction= functions.https.onRequest(async (request, response) => {
corsHandler(request, response, () => {});
//Your code here
});
感谢所有输入。