Сравнить локальный текстовый файл с онлайн-файлом - PullRequest
0 голосов
/ 10 июля 2019

Я хочу сравнить локальный текстовый файл с онлайн-файлом через PowerShell, содержимое двух файлов одинаковое.

Я знаю, что должен использовать командлет Compare-Object для сравнения двух файлов, и я обнаружил, что могу получить содержимое сетевого файла с помощью Invoke-WebRequest командлета (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:\> <b>$item1.GetType()</b>

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

PS C:\> <b>$item2.GetType()</b>

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

1 Ответ

2 голосов
/ 10 июля 2019

Invoke-WebRequest возвращает содержимое запрошенной веб-страницы в виде одной строки.Разбейте строку на новые строки, и вы сможете сравнить ее с данными из текстового файла (Get-Content по умолчанию создает массив строк).

Compare-Object -ReferenceObject $item1 -DifferenceObject ($item2 -split '\r?\n')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...