比较本地文本文件和在线文件

时间:2019-07-10 12:28:27

标签: powershell

我想通过PowerShell将本地文本文件与在线文件进行比较,两个文件的内容相同。

我知道我必须使用Compare-Object cmdlet来比较两个文件,并且发现可以通过Invoke-WebRequest cmdlet(https://www.quora.com/How-do-I-download-URL-content-using-Get-Content-in-PowerShell-Script)获取在线文件的内容。但是它没有按预期工作。它只是输出在线版本的文件内容。

$item1 = cat $path
$item2 = Invoke-WebRequest -Uri $URL | select -ExpandProperty Content

# No working as expected
Compare-Object -ReferenceObject $item1 -DifferenceObject $item2 

更新

调试之后,我发现使用System.ArrayGet-Content)时返回值的类型为cat,但是使用Invoke-WebRequest时返回值为String

PS C:\> $item1.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

PS C:\> $item2.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

1 个答案:

答案 0 :(得分:2)

Invoke-WebRequest将请求的网页的内容作为单个字符串返回。在换行符处分割字符串,您将能够将其与文本文件中的数据进行比较(Get-Content默认情况下会生成字符串数组)。

Compare-Object -ReferenceObject $item1 -DifferenceObject ($item2 -split '\r?\n')