【问题标题】:Sort UNC list of files by particular Folder按特定文件夹对文件的 UNC 列表进行排序
【发布时间】:2016-09-12 12:46:41
【问题描述】:

我有一堆带有一组通用日志文件夹的服务器。给定 UNC 根路径,我有一个脚本可以找到我需要的日志文件。 但是我似乎无法弄清楚如何根据路径下的文件夹“服务”对它们进行排序,例如我的脚本返回以下内容

\\Server1\C$\Logs\ServiceA\Logs\File.log
\\Server1\C$\Logs\ServiceC\Logs\File.log
\\Server2\C$\Logs\ServiceB\Logs\File.log
\\Server2\C$\Logs\ServiceD\Logs\File.log

如何按“服务”文件夹的字母顺序对这些结果进行排序?

我似乎可以弄清楚拆分、排序、连接。

【问题讨论】:

    标签: sorting powershell


    【解决方案1】:

    您可以将Sort-Object 的标准作为脚本块提供,您可以在其中剥离您不想考虑的所有内容的输入,例如像这样:

    ... | Sort-Object { $_ -replace '.*\\(Service[^\\]*)\\.*', '$1' }
    

    或像这样(如果所有 UNC 路径具有相同的结构):

    ... | Sort-Object { ([uri]$_).Segments[3] }
    

    【讨论】:

    • 太好了,我使用了“{ ([uri]$_).Segments[3] }”,效果很好。谢谢。
    • 在 PowerShell 控制台中粘贴 [uri]'\\Server1\C$\Logs\ServiceA\Logs\File.log' 并查看输出。
    • 也非常感谢您的解释。我每天都能学到新东西。
    【解决方案2】:
    $Uris = '\\Server2\C$\Logs\ServiceD\Logs\File.log',
    '\\Server1\C$\Logs\ServiceC\Logs\File.log',
    '\\Server1\C$\Logs\ServiceA\Logs\File.log',
    '\\Server2\C$\Logs\ServiceB\Logs\File.log'
    $Uris | sort {([uri]$_).segments[3]}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 2017-09-17
      • 2010-09-20
      • 2022-10-15
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多