Я записываю некоторое содержимое в файл, а затем проверяю содержимое файла, оно возвращает false; однако укусы идентичны.
Строка - это большая многострочная строка. Когда это тот же самый код с простой строкой, он работает как положено.
Пожалуйста, посмотрите на следующий тест. Я не могу объяснить, почему сравнение двух переменных возвращает ложь, но объект сравнения не находит разницы.
Второй пример кода показывает ожидаемое поведение.
PS H:\DFSMigration> $test = Invoke-Expression -Command "dfscmd.exe /view \\mydomain.com\rootdfs /batchrestore"
PS H:\DFSMigration> $test | Set-Content .\backup.txt
PS H:\DFSMigration> $test2 = Get-Content .\backup.txt
PS H:\DFSMigration> if ($test -eq (Get-Content .\backup.txt)) {"True"} Else{"false"}
false
PS H:\DFSMigration> if ($test -eq $test2) {"True"} Else{"false"}
false
PS H:\DFSMigration> Compare-Object -ReferenceObject $test -DifferenceObject $test2
PS H:\DFSMigration> $test.count
2256
PS H:\DFSMigration> $test2.count
2256
PS H:\DFSMigration> $test.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS H:\DFSMigration> $test2.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Это ожидаемое поведение:
PS H:\DFSMigration> $test = "This is a test string with loads of foobar"
PS H:\DFSMigration> $test | Set-Content backuptest.txt
PS H:\DFSMigration> $test2 = Get-Content backuptest.txt
PS H:\DFSMigration> If($test -eq $test2){ "The strings are equal"} Else { "They're not equal"}
The strings are equal