System._ComObject, von dem ich annehme, dass es in diesem ersten Befehl der Recurse-Funktionen eingestellt ist. Gibt es nicht das, was Get-Childitem zurückgibt?
Nein, die COM - Objekte aus dem zurück Scripting.FileSystemObject sind verschiedene Arten von Objekten dann, was Sie von den bekommen Powershell Dateisystemanbieter . Der PowerShell-Anbieter besteht im Wesentlichen aus .NET- System.IO.FileInfo- Objekten. Obwohl es so aussieht, als seien sie gleich, da beide sich auf Dateisystemvorgänge beziehen, sind die beiden Objekttypen nicht kompatibel.
Microsoft stellt ein Dokument zur Verfügung, das Konvertierungen vorschlägt .
Tatsächlich verwendet Ihr Skript bereits eine Methode, um sie in eine Ihrer if-Bedingungen umzuwandeln. Das bisschen wo du einen machst get-item $i.path
. Dieses Codefragment konvertiert grundsätzlich einen Objekttyp in den anderen. Es hat Get-Item
ein Powershell-Dateisystemobjekt zurückgegeben. Dazu geben Sie dem Befehl Get-Item den vollständigen Pfad des von scripting.filesystemobject zurückgegebenen Werts an $i
. Sie sollten in der Lage sein, diesen Trick auch an anderen Orten auszuführen.