PowerShell - 创建文件夹名称列表/数组以运行脚本

时间:2014-11-21 19:06:37

标签: powershell

我有一个PowerShell脚本(名称:Get-OrphanHomeFolder.ps1 - 作者:Jaap Brasser - http://www.jaapbrasser.com/new-script-find-orphaned-home-folders/)我下载并修改了在我们的文件服务器上查找和删除孤立的主文件夹。

由于公司中有大量用户,以及在枚举文件夹以选择可能的修复时我们的恢复软件性能下降,我们已经从传统的布局修改了我们的主文件夹结构:

 D:
 |
 |--Home
     |
     |--100000
     |--102001
     |--115000
         etc.

对于这样的结构:

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

如果我使用此命令行格式(.\Get-OrphanHomeFolder.ps1 -HomeFolderPath \\fileserver\homeshare\100xxx)运行脚本,它运行良好,但需要我为每个子文件夹(100xxx101xxx等手动运行它包含一组用户主文件夹。有没有办法让PowerShell枚举直接存在于D:\Home内的所有子文件夹,没有更深层次,然后使用它来创建100xxx101xxx等的列表/数组运行主要代码?

2 个答案:

答案 0 :(得分:1)

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

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

如果您有足够的系统资源可用,则可以使用start-job并行运行脚本的多个实例以减少总体执行时间 - 但我建议限制为不超过N-1个并发作业其中N是运行作业的系统上的CPU数。有关示例,请参阅http://www.poshpete.com/powershell/creating-a-throttle-for-background-tasks-without-rewriting-your-code-v2

答案 1 :(得分:1)

Get-ChildItem支持路径中的通配符。它可能就像运行此命令一样简单:

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