Согласно моему последнему вопросу Сравните два файла Мне наконец удалось заставить все работать внутри моего .bat. Еще раз спасибо за вашу поддержку.
Однако, как я узнал сегодня, мой руководитель использует Powershell в версии 2 вместо 5.1, чем я. Теперь проблема в том, что параметр -Raw этого кода:
$target = Get-Content "C:/pbr_tmp/PBreport/trc/TlsTrace.prn" -Raw
Я изменил это на:
$target = [System.IO.File]::ReadAllText("C:/pbr_tmp/PBreport/trc/TlsTrace.prn")
К сожалению, результаты неверны, и я получаю следующую ошибку:
GetEnumerator : Fehler beim Aufrufen der Methode, da [System.Collections.DictionaryEntry] keine Methode mit dem Namen "GetEnumerator" enthält.
Кто-нибудь знает, есть ли в полном фрагменте кода что-то, что может вызвать это?
$data = Import-Csv "C:/trc/ModulID.txt" -Delimiter ";" -Header ID,Term
$target = [System.IO.File]::ReadAllText("C:/pbr_tmp/PBreport/trc/TlsTrace.prn")
$counts = @{}
foreach ($term in $data.Term) {
$term = $term + " "
$index = -1
$count = 0
do {
$index = $target.IndexOf($term, $index + 1)
if ($index -gt -1) { $count++ } else { break; }
} while ($true);
if ($count -gt 0) {$counts[$term] = $count}
}
$counts = $counts.GetEnumerator() | sort name
$counts.GetEnumerator() |ForEach-Object {$_.Key, $_.Value -join '' } |Set-Content C:/pbr_tmp/PBreport/trace_results.txt
Например,
$counts = $counts.GetEnumerator() | sort name
Не вызывает исключения.