Vergleichen Sie Objekte in einer if-Anweisung Powershell
Ich versuche zum vergleichen von zwei Dateien und Ihr Inhalt entspricht, ich will es preform-die Aufgaben in der if-Anweisung in der Powershell 4.0
Hier ist der Kern dessen, was ich habe:
$old = Get-Content .\Old.txt
$new = Get-Content .\New.txt
if ($old.Equals($new)) {
Write-Host "They are the same"
}
Die Dateien sind die gleichen, aber es immer zu false ausgewertet wird. Was mache ich falsch? Gibt es einen besseren Weg, um darüber zu gehen?
InformationsquelleAutor Alex McKenzie | 2013-11-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Get-Content
ein array von Zeichenfolgen zurückgibt. In der PowerShell (und .NET).Equals()
auf ein array ist dabei ein Referenz-Vergleich, d.h. ist das exakt das gleiche array-Instanz. Ein einfacher Weg, das zu tun, was Sie wollen, wenn die Dateien nicht zu groß ist, Lesen Sie den Inhalt der Datei als ein string z.B.:Beachten Sie die Verwendung von
-ceq
hier um einen case-sensitiven Vergleich zwischen den Zeichenfolgen.-eq
hat eine groß- /Kleinschreibung zu vergleichen. Wenn die Dateien sehr groß sind, dann nutzen Sie die neue Get-FileHash-Befehl z.B.:-Raw
Ursachen derGet-Content
Befehl ein, um den Inhalt der Datei als ein string statt einem array von strings die entsprechenden Zeilen in der Datei.InformationsquelleAutor Keith Hill