2017-07-06 128 views
0

我试图创建一个PowerShell脚本来比较两个不同的文本文件中的两个IP地址,然后采取行动基础,如果他们匹配或他们不匹配。看下面Powershell-比较文件并采取行动

(Invoke-WebRequest ifconfig.me/ip).content | Out-File "C:\test\test2.txt" 
$ErrorActionPreference = "Stop" 
$File = "C:\test\test.txt" 
$File2 = "C:\test\test2.txt" 

Compare-Object -ReferenceObject (Get-Content $File2) -DifferenceObject (Get- 
Content $File) -IncludeEqual 

如果两个文件匹配,我明显得到一个==,或者= =>如果他们不匹配。我不知道如何使用==或=>作为变量来继续脚本的其余部分。任何帮助或建议,不胜感激。

回答

0

一种方法是检查SideIndicator属性的值;例如: -

if ((Compare-Object (Get-Content test1.txt) (Get-Content test2.txt) -IncludeEqual).SideIndicator -eq '==') { 
    "The files are equal" 
} 

Compare-Object输出什么,如果没有差异,并且您省略-IncludeEqual,所以上面的也可写成:如何添加一个.SideIndicator为<=

if (-not (Compare-Object (Get-Content test1.txt) (Get-Content test2.txt))) { 
    "The files are equal" 
} 
+0

? –

+0

什么引发了这个问题? –

+0

仍然是PowerShell的主要noob,但我看到它的方式,如果IP地址不匹配,我需要添加第二个变量来采取单独的操作。 –

0

您可以为Compare-Object结果指定一个变量。当我做了一个快速测试时,如果两个对象匹配,似乎没有任何东西会返回。所以你将不得不在变量的值中检查$ null。

$a = Compare-Object -ReferenceObject "abc" -DifferenceObject "abc" 
if($a -ne $null){continue working here}else{do other action here} 

欲了解更多信息请查看: https://ss64.com/ps/compare-object.html