Powershell-比较文件并采取操作

Powershell-比较文件并采取操作,powershell,Powershell,我正在尝试创建一个powershell脚本来比较两个不同文本文件中的两个IP地址,然后根据它们是否匹配采取操作。见下文 (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 -ReferenceOb

我正在尝试创建一个powershell脚本来比较两个不同文本文件中的两个IP地址,然后根据它们是否匹配采取操作。见下文

(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

如果两个文件匹配,我显然会得到一个==,如果它们不匹配,我会得到一个=>。我不知道如何使用==或=>作为变量来继续脚本的其余部分。非常感谢您的帮助或建议

您可以为
比较对象
结果指定一个变量。当我做一个快速测试时,如果两个对象匹配,似乎什么都不会返回。因此,您必须检查变量值中的$null

$a = Compare-Object -ReferenceObject "abc" -DifferenceObject "abc"
if($a -ne $null){continue working here}else{do other action here}
有关更多信息,请查看:

一种方法是检查
SideIndicator
属性的值;e、 g:

if ( (Compare-Object (Get-Content test1.txt) (Get-Content test2.txt) -IncludeEqual).SideIndicator -eq '==' ) {
  "The files are equal"
}
Compare Object
如果没有差异并且省略了
-IncludeEqual
,则不会输出任何内容,因此上述内容也可以写成:

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

如何添加一个.SideIndicator来说明引发问题的原因?仍然是powershell的一个主要问题,但在我看来,如果IP地址不匹配,我需要添加第二个变量以采取单独的操作。您可以使用
else
子句。有关如何使用
If
语句的信息,请运行命令
help about_If