PowerShell-创建要针对其运行脚本的文件夹名称列表/数组
我有一个PowerShell脚本名:Get-OrphanHomeFolder.ps1-作者:Jaap Brasser-我下载并修改了该脚本,用于查找和删除文件服务器上的孤立主文件夹 由于该公司有大量用户,加上我们的恢复软件在枚举文件夹以选择可能的恢复时性能缓慢,我们已将主文件夹结构从传统布局修改为:PowerShell-创建要针对其运行脚本的文件夹名称列表/数组,powershell,Powershell,我有一个PowerShell脚本名:Get-OrphanHomeFolder.ps1-作者:Jaap Brasser-我下载并修改了该脚本,用于查找和删除文件服务器上的孤立主文件夹 由于该公司有大量用户,加上我们的恢复软件在枚举文件夹以选择可能的恢复时性能缓慢,我们已将主文件夹结构从传统布局修改为: D: | |--Home | |--100000 |--102001 |--115000 etc. 对于这样的结构: D: |
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,我很幸运拼写正确:由于时间很晚,而且是周五,我将把测试推迟到下周。用一些虚拟文件夹构建了一个测试文件夹结构。运行脚本,它就像一个魅力。谢谢你的帮助。