尝试过滤掉给定目录中的所有 .p12 和 .pfx 文件
Attempting to Filter out All .p12 AND .pfx files from a given Directory
我的组织要求从我们的计算机和服务器中过滤并删除所有 .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 个用户,它是几乎不可能通过网络快速搜索。
不要将您的扩展作为 -filter
传递,而是使用 -include
传递它们 - 即 $files = Get-ChildItem -Path \$client\c$\Users\* -include $ext -Recurse -ErrorAction SilentlyContinue
。然后,您可以将 $ext
定义为字符串数组,例如 $ext = "*.pfx","*.p12"
,并且 Get-ChildItem
将 return 仅那些具有指定扩展名的文件。
我的组织要求从我们的计算机和服务器中过滤并删除所有 .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 个用户,它是几乎不可能通过网络快速搜索。
不要将您的扩展作为 -filter
传递,而是使用 -include
传递它们 - 即 $files = Get-ChildItem -Path \$client\c$\Users\* -include $ext -Recurse -ErrorAction SilentlyContinue
。然后,您可以将 $ext
定义为字符串数组,例如 $ext = "*.pfx","*.p12"
,并且 Get-ChildItem
将 return 仅那些具有指定扩展名的文件。