wolf6660
Goto Top

Fehler Compare-Object

Hi,

ich will zwei Verzeichnisse miteinander vergleichen. Hierzu bin ich auf diesen Befehl gestoßen der in verschiedenen Tutorials auch funktioniert.

Compare-Object -ReferenceObject (Get-ChildItem -Recurse -Path C:\temp\test1) -DifferenceObject (Get-ChildItem -Recurse -Path C:\temp\test2) -CaseSensitive

Dann bekomme ich folgende Fehlermeldung:
Compare-Object : Das Argument kann nicht an den Parameter "DifferenceObject" gebunden werden, da es NULL ist.  
In C:\Temp\Vergleichen.ps1:1 Zeichen:98
+ ... ) -DifferenceObject (Get-ChildItem -Recurse -Path C:\temp\test2) -CaseSe ...
+                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Compare-Object], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CompareObjectCommand

Kann mir jemand einen Tipp geben?

Danke

Content-Key: 4661680572

Url: https://administrator.de/contentid/4661680572

Printed on: April 27, 2024 at 12:04 o'clock

Member: RoadRage3
RoadRage3 Nov 17, 2022 at 05:59:58 (UTC)
Goto Top
Also in diesemTutorial werden die Pfade bzw. die Child-Items dazu zuerst in Variablen gespeichert und dann die Variablen aufgerufen.
Wäre mal eine Idee
Member: Wolf6660
Wolf6660 Nov 17, 2022 at 06:08:43 (UTC)
Goto Top
Hi,

habe dies Probiert.

$Quelle = 'C:\test\test1'  
$Ziel = 'C:\test\test2'  
$QuelleFiles = GET-ChildItem -Recurse -Path $Quelle
$ZielFiles = GET-ChildItem -Recurse -Path $Ziel

COMPARE-OBJECT -ReferenceObject $QuelleFiles -DifferenceObject $Zielfiles

Gleiche Fehlermeldung:
Compare-Object : Das Argument kann nicht an den Parameter "ReferenceObject" gebunden werden, da es NULL ist.  
In C:\Temp\Kopieren.ps1:7 Zeichen:33
+ COMPARE-OBJECT -ReferenceObject $QuelleFiles -DifferenceObject $Zielf ...
+                                 ~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Compare-Object], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CompareObjectCommand
Member: AndreasHoster
AndreasHoster Nov 17, 2022 at 06:25:40 (UTC)
Goto Top
Man macht das in einzelne Variablen, damit man bei einem Fehler nachschauen kann, was in der Variablen steht. So kann man jeden einzelnen Schritt nachkontrollieren und schauen, wo genau der Fehler ist.
<da es NULL ist> bedeutet, daß die Variable nichts enthält, was darauf schliessen lässt, daß Deine angegebenen Pfade nicht korrekt sind und deswegen Get-Childitem kein Ergebnis liefert.
Member: RoadRage3
RoadRage3 Nov 17, 2022 at 06:57:33 (UTC)
Goto Top
Ich hätts ja gerne bei mir nachgestellt, aber bei mir kommt auf
COMPARE-OBJECT -ReferenceObject $QuelleFiles -DifferenceObject $Zielfiles
einfach nur die nächste Eingabezeile. 🤔Error 404 - Keine Rückmeldung gefunden sogesehen
Member: Wolf6660
Wolf6660 Nov 17, 2022 at 07:01:32 (UTC)
Goto Top
die Verzeichnis sind aber nicht leer
fehler
Mitglied: 4400667902
Solution 4400667902 Nov 17, 2022 updated at 07:28:00 (UTC)
Goto Top
die Verzeichnis sind aber nicht leer
Aber die Pfade laut deinen Screenshots falsch. "test" statt "temp"
Des weiteren wirst du beim rekursive Vergleich so eh nur Unterschiede haben weil es zwei unterschiedliche Verzeichnisse mit unterschiedlichen Pfaden sind musst du schon relative daraus machen und compare-object sagen was es von den Properties vergleichen soll.
$Quelle = 'C:\temp\test1'  
$Ziel = 'C:\temp\test2'  
$QuelleFiles = Get-ChildItem -Recurse -Path $Quelle | select @{n='Pfad';e={$_.Fullname -replace ([regex]::escape($quelle))}},Length,LastWriteTime  
$ZielFiles = Get-ChildItem -Recurse -Path $Ziel | select @{n='Pfad';e={$_.Fullname -replace ([regex]::escape($ziel))}},Length,LastWriteTime  

COMPARE-OBJECT -ReferenceObject @($QuelleFiles) -DifferenceObject @($Zielfiles) -property Pfad,Length,LastWriteTime
Dem Problem das Compare-object nicht NULL vergleichen kann kann man übrigens mittels Kapselung der Variablen in @() entgegenwirken
Member: Wolf6660
Wolf6660 Nov 17, 2022 at 07:40:20 (UTC)
Goto Top
ahh ok danke was ein blöder Fehler von mir. Das ist wenn man testet und testet und zwischendurch die Verzeichnisse wechselt. SHIT

DANKE jetzt funktioniert es.
Member: RoadRage3
RoadRage3 Nov 17, 2022 at 07:45:20 (UTC)
Goto Top
Denk dann noch bitte daran deinen Beitrag auf gelöst zu setzen