Get-Childitem -Inclui o separador de matriz

0

Isso não funciona para mim, por quê? O que é aqui o separador certo?

A ideia é desta questão: Como faço para obter- childitem para filtrar vários tipos de arquivos?

$Jetzt = Get-Date
$Alterung = "14"
$Cache = "D:\SCANS\"
$Aenderung = $Jetzt.AddDays(-$Alterung)
$Files = Get-Childitem $Cache -Force -Include ('*.docx', '*.pdf') | Where {$_.LastWriteTime -le "$Aenderung"}
""
"Alle Dateien aelter als $Alterung_DIR Tage werden geloescht."
""
foreach ($File in $Files)
{
    if ($File -ne $NULL)
    {
            "Am $Jetzt GELOESCHT--> $File"
            Remove-Item $File.FullName -Force -recurse | out-NULL
    }
    else
    {
        "Keine Datei geloescht!"
    }
}

""
"Skriptende"

A saída é:

Alle Dateien aelter als 14 Tage werden geloescht.

Keine Datei geloescht!

Skriptende
    
por Peronia 07.07.2016 / 12:10

1 resposta

0

Algumas coisas para corrigir aqui.

  1. O parâmetro -Include requer que você também use o parâmetro -Path . De Get-Help Get-ChildItem -full ,

"The value of this parameter qualifies the Path parameter. Enter a path element or pattern, such as '*.txt'. Wildcards are permitted."

  1. $Cache deve terminar com um asterisco. Mais de Get-Help Get-ChildItem -full ,

"The Include parameter is effective only when the command includes the Recurse parameter or the path leads to the contents of a directory, such as C:\Windows*, where the wildcard character specifies the contents of the C:\Windows directory."

  1. Você não precisa de parênteses ou aspas simples em torno dessas extensões, pois elas não contêm espaços nem caracteres especiais.

Suas alterações devem ser

$Files = Get-Childitem -Path $Cache -Force -Include *.docx, *.pdf
$Cache = "D:\SCANS\*"

Não relacionado, mas também pode ser preferível substituir if ($File -ne $NULL) por if (!$File) .

    
por 07.07.2016 / 16:48

Tags