我想通过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.Array
(Get-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
答案 0 :(得分:2)
Invoke-WebRequest
将请求的网页的内容作为单个字符串返回。在换行符处分割字符串,您将能够将其与文本文件中的数据进行比较(Get-Content
默认情况下会生成字符串数组)。
Compare-Object -ReferenceObject $item1 -DifferenceObject ($item2 -split '\r?\n')