在 powershell 中从时间性能角度仅查找文件夹的最佳方法是什么

问题描述 投票:0回答:1

我有一个问题,我必须清除文件夹, 文件夹的名称大多数时候都是格式化的,我在 powershell 中编写了一个脚本来做到这一点。 但我明白,即使我这样做:

Get-ChildItem -Path $array[2] -Recurse -Directory
该命令将检查每个文件夹中的每个项目,即使它不是文件夹,这会导致需要几个小时才能获取每个文件夹路径。

我应该如何做才能使其按时执行?

这是脚本的一部分

foreach ($line in Get-Content ".\Exe-Purge-directories.txt") {

    $array = $line.Split("|")
    $deleteType = $array[0]
    $sdate = [int]$array[1] * -1 # nb de jour a retrancher ( nb negatif)
    $expiredDate = (Get-Date).AddDays($sdate) # today + date a retrancher 
    $folders = Get-ChildItem -Path $array[2] -Recurse -Directory -Force -ErrorAction SilentlyContinue
    #the line above is the one taking time  
    $pathException = Get-ChildItem -Path $array[2] -File #-Force #-ErrorAction SilentlyContinue
    
    if ($deleteType.Equals("DateTimeInFolderName")) {
        foreach ($folder in $folders) {
                     if ($folder.Name -match '^\d{4}-\d{2}$')
            # .....
powershell performance
1个回答
0
投票

我知道的两种方法是通过参数和通过过滤器

Get-ChildItem 有一个名为“-Directory”的参数,该参数应仅列出目录。 DOS 时代的“dir /ad”。

第二个稍慢的选项是使用“PSIsContainer”过滤器将 Get-ChildItem 通过管道传输到Where-Object

Get-ChildItem | Where-Object {$_.PSIsContainer}
© www.soinside.com 2019 - 2024. All rights reserved.