根据CSV文件从Get-ChildItem中排除目录列表

时间:2018-03-13 17:09:32

标签: powershell

目录结构如下:

    Directory: \\L04274\C$\Temp


Mode                LastWriteTime         Length Name                                            
----                -------------         ------ ----                                            
d-----        3/12/2018   2:04 PM                AutomatedImportProcess                          
d-----        3/13/2018  11:34 AM                f1                                              
d-----        3/13/2018  11:33 AM                f2       

排除CSV文件包含一列(稍后可能会扩展到包含文件类型的两列)。

ExcludeDirectory
\\L04274\C$\Temp\f2\
\\L04274\C$\Temp\f1\ 

PowerShell命令看起来像这样,但它似乎没有按预期执行:

$path = '\\L04274\C$\Temp\f1' 
$exclusion = @(Get-Content -LiteralPath '\\L04274\C$\Temp\Exclusions.csv')

Get-ChildItem -Path $path -Force -Exclude $exclusion

我期望看到的只是以下文件夹:

\\L04274\C$\Temp\AutomatedImportProcess\

2 个答案:

答案 0 :(得分:2)

Exclude仅适用于文件名

事实之后你必须使用嵌套的Where-Object语句:

$path = '\\L04274\C$\Temp\f1' 
$exclusions = @(Import-Csv -LiteralPath '\\L04274\C$\Temp\Exclusions.csv') |Select-Object -Expand ExcludeDirectory

Get-ChildItem -Path $path -Force |Where-Object {
    $FullName = $_.FullName
    -not($exclusions|Where-Object {
        $FullName -like "$_*"
    })
}

如果完整路径与任何排除项不匹配,-not(...)语句将返回$true,否则文件将被省略

答案 1 :(得分:0)

这有效:

dataetime