gpt4 book ai didi

Powershell:使用 -notmatch 语句排除大量文件夹

转载 作者:行者123 更新时间:2023-12-03 16:45:29 25 4
gpt4 key购买 nike

我正在创建一个小脚本,它将列出计算机上的 EXE 文件。

$computername = get-content env:computername
get-childitem C: -recurse | ? {$_.fullname -notmatch 'C:\\Windows'} | where {$_.extension -eq ".exe"} | format-table fullname | Out-File "\\server\incomming\$computername.txt"

问题是 -notmatch 不接受更多语句。我可以复制粘贴 吗? {$_.fullname -notmatch 'C:\\Windows'} 并用于其他文件夹,如 Program Files (x86)、Program Files 等。但我不想让脚本膨胀太多。

有没有一种方法可以使用 -notmatch 语句排除大量文件夹?

最佳答案

对于更复杂的逻辑表达式,您可以使用 -and 等逻辑运算符。

Get-ChildItem C:\ -Recurse | Where-Object { ($_.FullName -notmatch "C:\\Windows") -and ($_.FullName -notmatch "C:\\Program Files") }   

对于许多路径,我会在调用 Get-ChildItem 之前将它们添加到数组或哈希表中,并使用 Where-Object 检查管道文件对象路径存在于数组或哈希表中。最终,您必须在某处列出路径,但不一定在单个命令中。例如:

$excludedPaths = @("C:\Windows", "C:\Program Files");
Get-ChildItem C:\ -Recurse | Where-Object { $excludedPaths -notcontains $_.Directory }

关于Powershell:使用 -notmatch 语句排除大量文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26336125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com