【问题标题】:Moving folders using PowerShell and CSV file使用 PowerShell 和 CSV 文件移动文件夹
【发布时间】:2018-06-20 11:10:58
【问题描述】:

我们通过另一个 PS 脚本确定了一些用户目录的卸载,这些目录不再处于活动状态,并希望将这些用户文件夹从现有位置移动到存档位置。

我可以识别用户并将它们输出到.csv 文件,例如内容类似如下:

E:\Shares\Users$\AbassR E:\Shares\Users$\AbbottJ ... 等等

我想使用 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 文件中显示的文件夹中复制文件并复制到目标存档文件夹的根目录。

如果它可以将.csv 文件中标识的源文件夹移动(可能使用 robocopy /mov 开关)到目标存档位置中具有相同名称的文件夹中我们之前手动迁移的所有其他文件夹。

【问题讨论】:

    标签: powershell csv robocopy


    【解决方案1】:

    使用参数/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
    }
    

    【讨论】:

    • 不使用 cmdlet 有什么好处吗? Join-Path $dst (Split-Path $_ -Leaf)我正在寻找一个非常相似的答案。
    • 没有优势。这只是达到同一目的的不同方式。
    • 谢谢你。我假设我需要修改建议的脚本,例如 $dst = 'G:\Shares\ArchiveUsers$\Watford' GC -Path G:\Shares\ArchiveUsers$\userstomove.csv | ForEach-Object { $name = [IO.Path]::GetFileName($_) robocopy $_ "$dst\$name" /move /z /r:1 /w:1 /log+:G:\userscopied.txt /np } 这确实有效,因为它现在复制了文件夹,但是源文件夹的内容没有被复制/移动。
    • @Jason 你的日志对此有何看法?
    【解决方案2】:

    最后,这是我最终完成的脚本,完成了这项工作。但是,我确实遇到了移动用户目录的子文件夹的问题,例如我不是其所有者的“我的图片”。

    GC -Path G:\Shares\ArchiveUsers$\userstomove.csv | ForEach-Object {
        $dst = 'G:\Shares\ArchiveUsers$\Watford'
        $name = [IO.Path]::GetFileName($_)
        robocopy $_ "$dst\$name" /move /e /z /r:1 /w:1 /TEE /log+:G:\Shares\ArchiveUsers$\userscopied.txt /np
       }
    

    感谢大家的意见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多