Powershell Get ChildItem在哪里对象-不象$array-有办法做到这一点吗?

Powershell Get ChildItem在哪里对象-不象$array-有办法做到这一点吗?,powershell,Powershell,我已经编写了一个脚本,它将递归指定的文件夹,并对其中的文件进行一些分析。我需要在分析中排除指定的子文件夹。此排除项列表根据所分析的基本文件夹而变化。我让脚本使用如下长模式工作: Get-ChildItem -File -Recurse $source_folder | Where-Object { $_.FullName -notlike "*\folder_name0\*" -and $_.FullName -notlike "*\folder_name1\*" -and

我已经编写了一个脚本,它将递归指定的文件夹,并对其中的文件进行一些分析。我需要在分析中排除指定的子文件夹。此排除项列表根据所分析的基本文件夹而变化。我让脚本使用如下长模式工作:

Get-ChildItem -File -Recurse $source_folder | 
Where-Object {
    $_.FullName -notlike "*\folder_name0\*" -and 
    $_.FullName -notlike "*\folder_name1\*" -and 
    $_.FullName -notlike "*\folder_name2\*" -and 
    $_.FullName -notlike "*\folder_name3\*" -and 
    $_.FullName -notlike "*\folder_name4\*"
}
但这不是很好的可重用性。我希望能够将异常列表存储在.CSVs中,并根据正在分析的文件夹集调用所需的异常列表。我想做的是:

$exception_list = Import-CSV .\exception_list
Get-ChildItem -File -Recurse $source_folder | 
Where-Object {$_.FullName -notlike $exception_list}
但这是行不通的。我之所以怀疑,是因为我无法在数组中的元素之间指定and和or。我做了短暂的尝试,试图用“<代码>前缀”($ExabutySub列表中的$$){{$Fix++=“$}.FulnNeX——不含$Exp-”和“} />代码”来创建整个参数,但这很愚蠢和复杂,因为您仍然需要删除最后的“and”.< /p>
有没有一种有效的方法可以做到这一点?

这将构建一个要排除的部分名称数组,并使用该数组来构建正则表达式或用于
-notmatch
测试

$ExcludedDirList = @(
    'PSES-'
    'vscode'
    'Test_'
    )
# regex uses the pipe symbol as the logical "OR"
$RegexExcludedDirList = $ExcludedDirList -join '|'

$Results = Get-ChildItem -Path $env:TEMP -File -Recurse |
    Where-Object {
        $_.DirectoryName -notmatch $RegexExcludedDirList
        }

这将构建一个要排除的部分名称数组,并使用该数组构建正则表达式或用于
-notmatch
测试

$ExcludedDirList = @(
    'PSES-'
    'vscode'
    'Test_'
    )
# regex uses the pipe symbol as the logical "OR"
$RegexExcludedDirList = $ExcludedDirList -join '|'

$Results = Get-ChildItem -Path $env:TEMP -File -Recurse |
    Where-Object {
        $_.DirectoryName -notmatch $RegexExcludedDirList
        }

CSV文件是如何构造的?它是一个真正的CSV文件还是一个带有错误CSV扩展名的文本文件?CSV实际上是不相关的,因为我将从用作排除列表的任何数组创建。这只是存储排除数组以供以后使用的一种方法。啊!好吧,那我就忽略你帖子的那部分。。。[grin]CSV文件的结构如何?它是一个真正的CSV文件还是一个带有错误CSV扩展名的文本文件?CSV实际上是不相关的,因为我将从用作排除列表的任何数组创建。这只是存储排除数组以供以后使用的一种方法。啊!好吧,那我就忽略你帖子的那部分。。。[咧嘴笑]我试过了,结果似乎和我试过的一样。我可以在$EXCLUDEDDRILIST中包含“test”和“imports”等文件夹名称。我在$regexcludedDirlist中看到它们是“imports | test”,但当我运行Get ChildItem时,我仍然看到包含这些名称的目录返回,即“e:\Storage\imports\December”@Jeramy-我不知道它为什么会失败。[脸红]您是否检查了
$Results
$Var?在我的系统中,该集合没有目录名中包含这些单词的文件。哇,没有,这完全有效,谢谢!这个错误是我的打字错误。@Jeramy-kool!很高兴知道你能按需要工作。。。[咧嘴笑]我试过了,结果似乎和我试过的一样。我可以在$EXCLUDEDDRILIST中包含“test”和“imports”等文件夹名称。我在$regexcludedDirlist中看到它们是“imports | test”,但当我运行Get ChildItem时,我仍然看到包含这些名称的目录返回,即“e:\Storage\imports\December”@Jeramy-我不知道它为什么会失败。[脸红]您是否检查了
$Results
$Var?在我的系统中,该集合没有目录名中包含这些单词的文件。哇,没有,这完全有效,谢谢!这个错误是我的打字错误。@Jeramy-kool!很高兴知道你能按需要工作。。。[咧嘴笑]