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-ID: 4661680572

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

Ausgedruckt am: 24.11.2024 um 13:11 Uhr

RoadRage3
RoadRage3 17.11.2022 um 06:59:58 Uhr
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
Wolf6660
Wolf6660 17.11.2022 um 07:08:43 Uhr
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
AndreasHoster
AndreasHoster 17.11.2022 um 07:25:40 Uhr
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.
RoadRage3
RoadRage3 17.11.2022 um 07:57:33 Uhr
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
Wolf6660
Wolf6660 17.11.2022 um 08:01:32 Uhr
Goto Top
die Verzeichnis sind aber nicht leer
fehler
4400667902
Lösung 4400667902 17.11.2022 aktualisiert um 08:28:00 Uhr
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
Wolf6660
Wolf6660 17.11.2022 um 08:40:20 Uhr
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.
RoadRage3
RoadRage3 17.11.2022 um 08:45:20 Uhr
Goto Top
Denk dann noch bitte daran deinen Beitrag auf gelöst zu setzen