powershell powershell-v2.0

No se puede excluir el directorio utilizando el parámetro Get-ChildItem-Exclude en Powershell



powershell-v2.0 (3)

Estoy usando Powershell v 2.0. y copiar archivos y directorios de una ubicación a otra. Estoy usando una cadena [] para filtrar los tipos de archivo y también necesito filtrar un directorio para que no se copie. Los archivos se están filtrando correctamente, sin embargo, el directorio que intento filtrar obj sigue copiando.

$exclude = @(''*.cs'', ''*.csproj'', ''*.pdb'', ''obj'') $items = Get-ChildItem $parentPath -Recurse -Exclude $exclude foreach($item in $items) { $target = Join-Path $destinationPath $item.FullName.Substring($parentPath.length) if( -not( $item.PSIsContainer -and (Test-Path($target)))) { Copy-Item -Path $item.FullName -Destination $target } }

He intentado varias formas de filtrarlo, /obj o *obj* o /obj/ pero nada parece funcionar.

Gracias por cualquier ayuda.


El parámetro -Exclude está bastante roto. Le recomendaría que filtre directorios que no quiere usar con Where-Object (?{}) . Por ejemplo:

$exclude = @(''*.cs'', ''*.csproj'', ''*.pdb'') $items = Get-ChildItem $parentPath -Recurse -Exclude $exclude | ?{ $_.fullname -notmatch "//obj//?" }

PD: Palabra de advertencia: ni siquiera piense en utilizar. -Exclude en el -Exclude de Copy-Item sí.


Utilizo esto para listar archivos bajo una raíz pero no incluir los directorios

$files = gci ''C:/' -Recurse | Where-Object{!($_.PSIsContainer)}


Get-ChildItem -Path $SourcePath -File -Recurse | Where-Object { !($_.FullName).StartsWith($DestinationPath) }