使用 Powershell 从多个文件夹复制特定子文件夹

Copy specific subfolder from multiple folders using Powershell

我正在尝试做一些日志备份并努力使用可以为我做这件事的 ps1 命令。

我有这样的文件夹结构:

folder_root/
├── sub_a/
│   ├── Logs
│   ├── bootstrap.min.css
│   ├── Configuration
├── sub_b/
│   ├── Logs
│   └── Settings
└── sub_c/
    ├── Logs
    ├── Application
    ├── class.js
    └── other-file.html

而且我只需要从所有子目录中提取 Logs 文件夹并将其复制到备份文件夹(存在)中,以遵守现有文件夹结构:

Backup-03-24/
├── sub_a/
│   └── Logs
├── sub_b/
│   └── Logs
└── sub_c/
    └── Logs

如何使用 Powershell 实现此目的?我正在尝试在路径中使用带通配符的 Copy-Item cmdlet,但它不起作用。

Copy-Item -Destination "C:\folder_root\*\Logs"

这太难了。只需循环使用 Get-ChildItem 获得的目录,使用筛选器筛选要复制的文件夹名称:

$sourcePath  = 'D:\folder_root'
$Destination = 'D:\Backup-03-24'
Get-ChildItem -Path $sourcePath -Filter 'Logs' -Recurse -Directory |
    ForEach-Object {
        $targetPath = Join-Path -Path $Destination -ChildPath $_.Parent.FullName.Substring($sourcePath.Length)
        $null = New-Item -Path $targetPath -ItemType Directory -Force
        $_ | Copy-Item -Destination $targetPath -Recurse -Force
    }

结果:

D:\BACKUP-03-24
+---sub_a
|   \---Logs
+---sub_b
|   \---Logs
\---sub_c
    \---Logs