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.