PowerShell-创建要针对其运行脚本的文件夹名称列表/数组

PowerShell-创建要针对其运行脚本的文件夹名称列表/数组,powershell,Powershell,我有一个PowerShell脚本名:Get-OrphanHomeFolder.ps1-作者:Jaap Brasser-我下载并修改了该脚本,用于查找和删除文件服务器上的孤立主文件夹 由于该公司有大量用户,加上我们的恢复软件在枚举文件夹以选择可能的恢复时性能缓慢,我们已将主文件夹结构从传统布局修改为: D: | |--Home | |--100000 |--102001 |--115000 etc. 对于这样的结构: D: |

我有一个PowerShell脚本名:Get-OrphanHomeFolder.ps1-作者:Jaap Brasser-我下载并修改了该脚本,用于查找和删除文件服务器上的孤立主文件夹

由于该公司有大量用户,加上我们的恢复软件在枚举文件夹以选择可能的恢复时性能缓慢,我们已将主文件夹结构从传统布局修改为:

 D:
 |
 |--Home
     |
     |--100000
     |--102001
     |--115000
         etc.
对于这样的结构:

D:
 |
 |--Home
     |
     |--100xxx
     |    |
     |    |--100000
     |    |--100001
     |    |--100002
     |      etc.
     |--102xxx
     |    |
     |    |--102000
     |    |--102001
     |    |--102002
     |      etc.
     |--115xxx
     |    |
     |    |--115000
     |    |--115001
     |      etc.

如果使用此命令行格式运行脚本。\Get-OrphandHomeFolder.ps1-HomeFolderPath\\fileserver\homeshare\100xxx,效果很好,但需要为包含一组用户主文件夹的每个子文件夹100xxx、101xxx等手动运行脚本。是否有某种方法让PowerShell枚举直接存在于D:\Home中的所有子文件夹(无更深层次),然后使用该方法创建100xxx、101xxx等的列表/数组以运行主代码?

获取所有顶级目录,然后遍历它们

Get-childitem \\fileserver\homeshare -directory | foreach-object {.\get-orphanhomefolder.ps1 -homefolderpath $_.fullname}

如果您有足够的可用系统资源,可以使用start job并行运行脚本的多个实例,以减少总体执行时间-但我建议将并发作业限制为不超过N-1个,其中N是运行作业的系统上的CPU数量。请参阅以获取示例。

Get ChildItem支持路径中的通配符。它可能与运行以下命令一样简单:

.\Get-OrphanHomeFolder.ps1 -HomeFolderPath \\fileserver\homeshare\*

让孩子做你想做的事我会试试看。说到PowerShell,我很幸运拼写正确:由于时间很晚,而且是周五,我将把测试推迟到下周。用一些虚拟文件夹构建了一个测试文件夹结构。运行脚本,它就像一个魅力。谢谢你的帮助。