Powershell 如何使用DfsrIdRecordInfo WMI类的index属性对WMI查询进行分页

Powershell 如何使用DfsrIdRecordInfo WMI类的index属性对WMI查询进行分页,powershell,wmi,wmi-query,microsoft-distributed-file-system,Powershell,Wmi,Wmi Query,Microsoft Distributed File System,编辑:我应该在serverfault上发布这个吗?stackoverflow上甚至没有dfs-r类别,但我认为这更像是一个脚本\编程问题。让我知道我是否应该把它改为服务器故障 我试图使用DfsrIdRecordInfo类检索6000个文件稍大的DFSR数据库的所有文件,但收到WMI配额错误 将服务器上的wmi配额增加一倍甚至三倍并不能解决此问题 我在这里发现这个类的index属性是:记录的运行时索引。此值用于对大型查询的结果进行分区。这听起来正是我想要的,但这个属性的行为并不是我所期望的 我发现

编辑:我应该在serverfault上发布这个吗?stackoverflow上甚至没有dfs-r类别,但我认为这更像是一个脚本\编程问题。让我知道我是否应该把它改为服务器故障

我试图使用DfsrIdRecordInfo类检索6000个文件稍大的DFSR数据库的所有文件,但收到WMI配额错误

将服务器上的wmi配额增加一倍甚至三倍并不能解决此问题

我在这里发现这个类的index属性是:记录的运行时索引。此值用于对大型查询的结果进行分区。这听起来正是我想要的,但这个属性的行为并不是我所期望的

我发现,当我尝试使用此属性进行分页时,它不会按照下面的powershell示例检索所有记录

我在一个DFSR数据库上测试了这一点,该数据库中的文件少于700个,并且没有抛出配额错误。因为这是一个小型数据库,我可以在不到一秒钟的时间内获得所有类似的文件:

$DFSRFiles = 
    gwmi `
    -Namespace root\microsoftdfs `
    -ComputerName 'dfsrserver' `
    -Query "SELECT *
            FROM DfsrIdRecordInfo                 
            WHERE replicatedfolderguid = '$guid'" 

PS F:\> $DFSRFiles.count
680
所以我在这个DFSR数据库中有680个文件。现在,如果我尝试使用index属性进行分页,如下所示:

$starttime = Get-Date;
$i = 0 #index counter
$DfsrIdRecordInfoArr = @()
while ($i -lt 1000) {
    $starttimepage = Get-Date

    $StartRange = $i
    $EndRange = $i += 500
    Write-Host -ForegroundColor Green "On range: $StartRange - $EndRange"    

    $DFSRFiles = 
        gwmi `
        -Namespace root\microsoftdfs `
        -ComputerName 'dfsrserver' `
        -Query "SELECT * 
                FROM DfsrIdRecordInfo 
                WHERE index >= $StartRange 
                AND index <= $EndRange 
                AND replicatedfolderguid = '$guid'"      

    $DfsrIdRecordInfoArr += $DFSRFiles

    Write-Host -ForegroundColor Green "Returned $($DFSRFiles.count) objects from range"

    (Get-Date) - $starttimepage

    write-host -fo yellow "DEBUG: i = $i"
}

(get-date) - $starttime

PS F:\> $DfsrIdRecordInfoArr.count
517
我在做傻事吗?我认为运行时索引意味着索引属性不是静态附加到记录,而是在每次运行查询时为每个记录重新生成,因为$DFSRFiles中对象的索引属性与$DfsrIdRecordInfoArr中对象的索引属性不匹配

但是,如果每个查询的index属性都不同,那么$DfsrIdRecordInfoArr中就会有重复项,而我没有。所有记录都是唯一的,但它不会返回所有记录

索引属性对我来说完全无用吗?也许当它说…分区一个大查询的结果时,这意味着它将用于已经从WMI返回的记录,而不是WMI查询本身

任何指导都将不胜感激。提前谢谢

On range: 0 - 500
Returned 501 objects from range

Days              : 0
Hours             : 0
Minutes           : 1
Seconds           : 29
Milliseconds      : 540
Ticks             : 895409532
TotalDays         : 0.001036353625
TotalHours        : 0.024872487
TotalMinutes      : 1.49234922
TotalSeconds      : 89.5409532
TotalMilliseconds : 89540.9532

DEBUG: i = 500
On range: 500 - 1000
Returned 16 objects from range
Days              : 0
Hours             : 0
Minutes           : 1
Seconds           : 35
Milliseconds      : 856
Ticks             : 958565847
TotalDays         : 0.00110945121180556
TotalHours        : 0.0266268290833333
TotalMinutes      : 1.597609745
TotalSeconds      : 95.8565847
TotalMilliseconds : 95856.5847

DEBUG: i = 1000
Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 5
Milliseconds      : 429
Ticks             : 1854295411
TotalDays         : 0.00214617524421296
TotalHours        : 0.0515082058611111
TotalMinutes      : 3.09049235166667
TotalSeconds      : 185.4295411
TotalMilliseconds : 185429.5411