【问题标题】:PowerShell - Create list/array of Folder Names to run a Script AgainstPowerShell - 创建文件夹名称列表/数组以运行脚本
【发布时间】:2014-11-23 12:15:23
【问题描述】:

我有一个 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 等的列表/数组来运行主要代码?

【问题讨论】:

  • Get-Childitem 应该做你想做的事

标签: powershell


【解决方案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

【讨论】:

  • 我会试一试。当谈到 PowerShell 时,我很幸运能够正确拼写它。 :-) 考虑到时间很晚而且是星期五,我将把测试推迟到下周。
  • 用一些虚拟文件夹构建了一个测试文件夹结构。运行脚本,它就像一个魅力。感谢您的帮助。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2014-11-13
    相关资源
    最近更新 更多