我正在尝试使用比较两个.json文件
# Compare two files
$BLF = (Get-Content -Path C:Users...DocumentsAndroid1.json)
$CLF = (Get-Content -Path C:Users...DocumentsAndroid2.json)
$aUnsorted = Compare-Object -ReferenceObject $BLF -DifferenceObject $CLF -IncludeEqual
我已经编写了比较规则变量的代码,例如下面的";passcodeBlockSimple";,并将该值注册在一个文件与另一个文件中。我想对括号内定义的值做同样的处理:
"variableName": [
"99"
]
当两个文件具有相同的值时,我有一个解决方案,通过添加到值上,直到它找到尾括号]。这给出了";variableName":["99"]。参见变量";roleScopeTagIds";下面作为这样一个变量的例子。
我想在它们不同的时候找到值,但Compare Object的输出逐行列出了差异。下面的例子中,我丢失了关于变量"0"的信息;restrictedApps";当它在两个文件中不同时(文件1具有值"1"并且文件2具有值"2"(。
InputObject SideIndicator
----------- -------------
"@odata.type": "#microsoft.graph.iosCompliancePolicy", ==
"roleScopeTagIds": [ ==
"0" ==
], ==
"version": 1, ==
"passcodeMinutesOfInactivityBeforeScreenTimeout": 1, ==
"managedEmailProfileRequired": false, ==
"restrictedApps": [ ==
], ==
"passcodeBlockSimple": false, =>
"2" =>
"passcodeBlockSimple": true, <=
"1" <=
文件是,文件1:
"@odata.type": "#microsoft.graph.iosCompliancePolicy",
"roleScopeTagIds": [
"0"
],
"version": 1,
"passcodeBlockSimple": true,
"passcodeMinutesOfInactivityBeforeScreenTimeout": 1,
"managedEmailProfileRequired": false,
"restrictedApps": [
"1"
],
文件2:
"@odata.type": "#microsoft.graph.iosCompliancePolicy",
"roleScopeTagIds": [
"0"
],
"version": 1,
"passcodeBlockSimple": false,
"passcodeMinutesOfInactivityBeforeScreenTimeout": 1,
"managedEmailProfileRequired": false,
"restrictedApps": [
"2"
],
所以我的问题是:当变量的值不同,并且Compare Object的结果如上所述时,我如何找到它们的值?
(我必须使用比较对象功能(
我不完全明白,因为你的json是无效的,但这段代码应该可以解决你的问题:
Json1:
{
"@odata.type": "#microsoft.graph.iosCompliancePolicy",
"roleScopeTagIds": [
"0"
],
"version": 1,
"passcodeBlockSimple": true,
"passcodeMinutesOfInactivityBeforeScreenTimeout": 1,
"managedEmailProfileRequired": false,
"restrictedApps": [
"1"
]
}
Json2:
{
"@odata.type": "#microsoft.graph.iosCompliancePolicy",
"roleScopeTagIds": [
"0"
],
"version": 1,
"passcodeBlockSimple": false,
"passcodeMinutesOfInactivityBeforeScreenTimeout": 1,
"managedEmailProfileRequired": false,
"restrictedApps": [
"2"
]
}
[Array]$FileSoll = Get-Content C:UsersAlexDesktop1.json
[Array]$FileIst = Get-Content C:UsersAlexDesktop2.json
$FileSoll = $($FileSoll | ConvertFrom-Json | ConvertTo-Json) -split ([Environment]::NewLine)
$FileIst = $($FileIst | ConvertFrom-Json | ConvertTo-Json) -split ([Environment]::NewLine)
$diff = Compare-Object -ReferenceObject $FileSoll -DifferenceObject $FileIst
返回差异:
InputObject SideIndicator
----------- -------------
"passcodeBlockSimple": false, =>
"2" =>
"passcodeBlockSimple": true, <=
"1" <=