Powershell的foreach中发生循环

时间:2019-05-14 07:50:14

标签: powershell

我正在尝试从许多txt文件的url中获取特定值,并将其放入csv中,但是我在使用foreach时遇到了麻烦。

我有很多文件

|   Seoul-D4v3_0020.txt

|   Seoul-D4v3_0120.txt

|   Seoul-D4v3_0220.txt

|   Seoul-D4v3_0320.txt

|   Seoul-D4v3_0420.txt


              .

              .

              .

foreach中发生循环。

您能找到问题吗?

$geeksrc = "D:\BMT\BMT\BMTResults\geekbench"
$geektxts = (Get-ChildItem $geeksrc).where({!$_.PSIscontainer})
filter timestamp {"$(Get-Date -Format "yyyy-MM-dd HH:mm:ss.fff"): $_"}

Write-Output "finding files" | timestamp
$result = @()
foreach ($txt in $geektxts) {
    Write-Output "foreach VMs" | timestamp
    $spec = $txt.name.Split('_')[0]
    $datetime = $txt.LastWriteTime.ToString("yyyyMMdd")+"_"+$txt.name.Split('_')[1].Replace(".txt","")
    $srctxt = Get-Content -Path $geeksrc"\$txt"


    Write-Output "Loading files" | timestamp
    foreach($line in $srctxt) {
        if($line -match "https://browser.geekbench.com/v4/cpu*"){
            $uri = $line.Trim()
        }

        if($uri){
            #Get-ContetFrom Uri
            $html = Invoke-WebRequest $uri
            $tbl = $html.ParsedHtml.body.GetElementsByTagName("table") | `
                Where-Object {$_.className -eq "table geekbench2-show section-performance"}
            $cpuTitle = $tbl[0].GetElementsByTagName("th") | Where-Object {$_.className -eq "name" -and $_.innerText -eq "Single-Core Score"}

            if($cpuTitle) {

            }
            Write-Output "Collecting $($spec)+$($datetime) CPU Score" | timestamp
            $cpu = ($tbl[0].GetElementsByTagName("th") | Where-Object {$_.className -eq "score"})[0].innerText
            Write-Output "Collecting $($spec)+$($datetime) Memory Score" | timestamp
            $mem = ($tbl[0].GetElementsByTagName("th") | Where-Object {$_.className -eq "score"})[4].innerText


            $arr = "" | Select-Object AzureVM,BMT_Time,CPU_Score,Mem_Score

            $arr.AzureVM = $spec
            $arr.BMT_Time = $datetime
            $arr.CPU_Score = $cpu
            $arr.Mem_Score = $mem

            #break
        }
        Write-Output "Get Result" | timestamp
        $result += $arr
        }

}
Write-Output "Collecting Results" | timestamp
$result | Export-Csv -Path "$($geeksrc)\Results\Geekbench_Results.csv" -Encoding UTF8 -NoTypeInformation

2019-05-14 16:35:38.249: finding files

2019-05-14 16:35:38.254: foreach VMs

2019-05-14 16:35:38.263: Loading files

2019-05-14 16:35:40.195: Collecting Seoul-D4v3+20190510_0020 CPU Score

2019-05-14 16:35:40.226: Collecting Seoul-D4v3+20190510_0020 Memory Score

2019-05-14 16:35:40.236: Get Result

2019-05-14 16:35:42.183: Collecting Seoul-D4v3+20190510_0020 CPU Score

2019-05-14 16:35:42.206: Collecting Seoul-D4v3+20190510_0020 Memory Score

在Seoul-D4v3 + 20190510_0020之后,必须输出Seoul-D4v3 + 20190510_0120。

0 个答案:

没有答案