我的组织需要过滤并从我们的计算机和服务器中删除所有.PFX
和.P12
文件。 我们目前每周运行的脚本在更高的指导下不够深入或不够深入。 我正在尝试做的是采用我当前的工作脚本,并过滤两个文件扩展名。 写剧本的人几乎已经离开了这个世界,所以我正在写一个我没有写的剧本,但我正在努力熟悉。
我已经尝试更改Get-ChildItem
cmdlt 中的某些变量以在那里应用筛选而不是变量。 这包括以下尝试:
$Files = Get-ChildItem -Path \$clientc$Users -Filter -filter {(Description -eq "school") -or (Description -eq "college")} -Recurse -ErrorAction SilentlyContinue
这是代码的一部分,而不是全部。 除此之外,还有日志记录和注释以及其他管理任务,我只包括了创建错误的代码部分。
$computers = Get-ADComputer -Filter * -SearchBase "AD OU PATH OMITTED"
$destination = "****SoftwareaPatching_ToolsLog FilesSoft CertWorkstationsAUG 19WEEK 2"
$ext = "*.pfx"
foreach ($computer in $computers)
{
$client = $computer.name
if (Test-Connection -ComputerName $client -Count 1 -ErrorAction SilentlyContinue)
{
$outputdir = "$destination$client"
$filerepo = "$outputdirFiles"
$files = Get-ChildItem -Path \$clientc$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 \$clientc$Users* -include $ext -Recurse -ErrorAction SilentlyContinue
传递它们。然后,您可以将$ext
定义为字符串数组,例如$ext = "*.pfx","*.p12"
,Get-ChildItem
将仅返回具有指定扩展名的文件。