Cihan Altunok Ответов: 0

Powershell сравнение значений


Я пробовал множество функций в Powershell, включая объект сравнения, для каждой функции, но безуспешно.

Вот что я хочу сделать.

У меня есть два файла с именами File 1 и File 2. В файле 1 у меня есть такая строка.

В файле 2 у меня есть вот это.

Поэтому я хочу сравнить значение ContractGroups из файла 1 со значением ContractGroups в файле 2. Если они совпадают, я хочу добавить результат в файл.

Трудность, с которой я сталкиваюсь, заключается в том, что я могу настроить переменную, чтобы получить содержимое для сопоставления. Но при сравнении я хочу учитывать только контрактные группы для матча. Поэтому, как только файл 2 будет отсканирован, я хочу посмотреть, совпадает ли значение ContractGroups с файлом 1.

Я думаю, что для сравнения мне просто нужно найти способ сканирования строки, содержащей значение Name="ContractGroups" из файла 1, а затем считывания ее значения (CC), а затем сканирования файла 2, чтобы сначала увидеть, соответствует ли строка значению Name="ContractGroups", и если да, то совпадает ли ее значение (CC) с файлом one? Если да, то просто запишите это "совпадение" в пустой файл.

Было бы полезно, если бы вы пролили свет на это. Извините, так как я новичок в PS.

Что я уже пробовал:

Я уже пробовал это.
$file1 = Get-Content "C:\Users\Altunokc\Desktop\Guardian\NotUsed\20200513 Environment parameters\EnvironmentParameters_ICE_EU_PROD.xml" 
$file2 = Get-Content "C:\Users\Altunokc\Desktop\inetpub\wwwroot\EU\Guardian\Website\appSettings.config"
$pattern = $file1| %{$_ -MATCH   '.Name="ContractGroups" Value'}


$result = "C:\Users\Altunokc\Desktop\Differentdd.txt"

$file1 | foreach { $pattern = $file2 -match $_

        if ( $match ) { $match | Out-File -Force $result -Append }
       
      }

а вот так
if(Compare-Object -ReferenceObject $(Get-Content $file2 )   -DifferenceObject $(Get-Content $file1 ) | %{$_ -MATCH   '.Name="ContractGroups" Value'}  -SimpleMatch|
Out-File  -FilePath C:\Users\Altunokc\Desktop\Different.txt)

 {"match"}
Else  {"No "}

Не повезло.

Richard MacCutchan

Что - Не повезло" значит? А каковы ценности предметов, которые вы сравниваете?

Cihan Altunok

Привет, Ричард, я не смог просто сравнить значение для ContractGroups, а не всю строку файлов. Значение для сравнения. "ВВ"
Большое спасибо

Richard MacCutchan

Извините, но я понятия не имею, что это значит. Проблема в том, что вам нужно найти основные элементы из каждого файла. Поэтому вместо того, чтобы пытаться сделать все это в одном заявлении, разбейте его на этапы. Найдите элемент(Ы), который вы ищете в файле 1. Если вы найдете их, то распечатайте их на экране, чтобы вы знали, что часть кода работает. Сделайте то же самое для файла 2. Теперь вы должны быть в состоянии увидеть, как сравнить эти два значения.

Cihan Altunok

$reader = New-Object System.IO.StreamReader("C:\Users\Altunokc\Desktop\Guardian\NotUsed\20200513 окружающая среда parameters\EnvironmentParameters_ICE_EU_PROD.xml")
$компаратора = новый объект System.IO.StreamReader("C:\Users\Altunokc\Desktop\inetpub\wwwroot\EU\Guardian\Website\appSettings.config")

$русло = @()

if ($reader -ne $null) {
В то время как (!$reader.EndOfStream ) {
$строка = $читателю.С readline()

if ($line.Содержит('SettingId="16"') - и $line.Содержит('ContractGroups') ) {

$lines += $line

$lines | Select-Object -Last 1


}
}
}

$lines2 = @()

if ($comparator -ne $null) {
В то время как (!$компаратор.EndOfStream ) {
$line2 = $comparator.Линия чтения()

if ($line2.Содержит('ContractGroups'')) {

$lines2 += $line2

$lines2 | Select-Object -Last 1


}
}
}

Cihan Altunok

Как вы можете видеть выше, теперь я могу получить значения, подобные приведенным ниже.
добавить ключ="ContractGroups" значение="CC"/>
&ЛТ;установка settingid="16" имя="ContractGroups" значение="СС"и GT;

Я полагаю, что мне просто нужно найти способ сравнения бита после значения, чтобы логика была такой

Если значение ( считанное значение из строки 1) равно значению из файла 2.

0 Ответов