System._ComObject, which I'm assuming is set in that first command of the recurse functions. Is that not what Get-Childitem returns?
Não. Os objetos COM retornados do scripting.filesystem_object são tipos diferentes de objetos, então o que você obtém do Provedor do sistema de arquivos Powershell . O provedor Powershell é basicamente composto de objetos .NET System.IO.FileInfo . Embora pareça que são os mesmos, já que ambos estão lidando com operações do sistema de arquivos, os dois tipos de objetos não são compatíveis.
A Microsoft fornece um documento que sugere conversões .
Na verdade, seu script já usa um método para convertê-los em uma de suas condicionais if. O bit em que você faz um get-item $i.path
. Esse fragmento de código basicamente convertendo um tipo de objeto para outro. Ele tem Get-Item
retornar um objeto do sistema de arquivos powershell e, para fazer isso, você concede ao comando Get-Item o caminho completo do retornado pelo valor scripting.filesystemobject que você tem em $i
. Você deve ser capaz de fazer o mesmo truque em seus outros lugares também.