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) }