试图从给定目录中过滤掉所有 .p12 和 .pfx 文件

Posted

技术标签:

【中文标题】试图从给定目录中过滤掉所有 .p12 和 .pfx 文件【英文标题】:Attempting to Filter out All .p12 AND .pfx files from a given Directory 【发布时间】:2019-08-14 18:56:59 【问题描述】:

我的组织要求从我们的计算机和服务器中过滤和删除所有 .PFX.P12 文件。根据更高的指导,我们目前每周运行的脚本不够深入或不够深入。我想要做的是获取我当前的工作脚本,并过滤两个文件扩展名。编写脚本的人几乎已经离开了这个世界,所以我正在编写一个不是我写的脚本,但我正在努力熟悉。

我已经尝试更改 Get-ChildItem cmdlt 中的一些变量以在此处应用过滤而不是变量。这包括以下尝试:

$Files = Get-ChildItem -Path \\$client\c$\Users -Filter -filter (Description -eq "school") -or (Description -eq "college") -Recurse -ErrorAction SilentlyContinue 

这里是代码的一部分,而不是全部。除此之外还有日志记录和注释以及其他管理任务,我只包含了导致错误的代码部分。

$computers = Get-ADComputer -Filter * -SearchBase "AD OU PATH OMITTED"
$destination = "****\Software\aPatching_Tools\Log Files\Soft Cert\Workstations\AUG 19\WEEK 2"
$ext = "*.pfx"

foreach ($computer in $computers)

    $client = $computer.name

if (Test-Connection -ComputerName $client -Count 1 -ErrorAction SilentlyContinue)

    $outputdir = "$destination\$client"
    $filerepo = "$outputdir\Files"
    $files = Get-ChildItem -Path \\$client\c$\Users -Filter $ext -Recurse -ErrorAction SilentlyContinue

    if (!$files)
    
        Write-Host -ForegroundColor Green "There are no .pfx files on $client."
    
    else
    
        Write-Host -ForegroundColor Cyan "PFX files found on $client"

脚本的预期和正常操作是它遍历每台机器,对其进行测试,如果它处于脱机状态则继续运行,或者如果它处于联机状态,则在搜索并继续运行时会暂停 4-5 分钟。

当我进行更改(例如执行$ext = "*.p12"".pfx")时遇到的错误是-Filter 不支持此操作。或者,如果我尝试对过滤进行上述更改,脚本每台机器需要 1-2 秒,并且有时 C:\Users 文件夹中有 15-20 个用户,几乎不可能通过网络快速搜索。

【问题讨论】:

【参考方案1】:

不要将扩展名作为-filter 传递,而是使用-include(即$files = Get-ChildItem -Path \\$client\c$\Users\* -include $ext -Recurse -ErrorAction SilentlyContinue)传递它们。然后,您可以将$ext 定义为字符串数组,例如$ext = "*.pfx","*.p12",而Get-ChildItem 将仅返回具有指定扩展名的文件。

【讨论】:

谢谢。我将把它扔进我们的脚本并现在运行它。大约需要一天的时间,所以我应该能够在 24 小时内将其验证为答案。谢谢! 您可能需要添加-Force 开关,以便它同时搜索系统和隐藏文件和文件夹。 早上好。这是解决办法。如此简单,我简直不敢相信我错过了它。我还有很多东西要学,谢谢!

以上是关于试图从给定目录中过滤掉所有 .p12 和 .pfx 文件的主要内容,如果未能解决你的问题,请参考以下文章

将 pfx 格式转换为 p12

使用OpenSSL创建多级CA证书链签发证书并导出为pkcs12/p12/pfx文件

从字符串中过滤掉 url

使用OpenSSL创建多级CA证书链签发证书并导出为pkcs12/p12/pfx文件

使用OpenSSL创建多级CA证书链签发证书并导出为pkcs12/p12/pfx文件

将证书链添加到 p12(pfx) 证书