我有一个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
)运行脚本,它运行良好,但需要我为每个子文件夹(100xxx
,101xxx
等手动运行它包含一组用户主文件夹。有没有办法让PowerShell枚举直接存在于D:\Home
内的所有子文件夹,没有更深层次,然后使用它来创建100xxx
,101xxx
等的列表/数组运行主要代码?
答案 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\*