如何让 powershell 文件搜索在整个网络上更快

如何让 powershell 文件搜索在整个网络上更快

我试图搜索 AD 网络中所有机器上的所有驱动器,但我的方法效率不高。基本上,我想出了一个这样的脚本,它的作用如下:

  1. 从 AD 获取所有计算机。
  2. 检查是否存在 WMI 连接,记录机器,以便我查看。
  3. 获取计算机上的所有物理驱动器。
  4. 搜索远程共享上的文件

$computers = Get-ADComputer -filter *  | Select -Exp Name
$computers.Count
$i = 0
foreach ($computer in $computers) {
$i++ 
Write-Host "Checking Computer Number " $i " with the hostname " $computer
if (Test-Connection $computer -Quiet ) 
{
$drives = get-wmiobject -computer $computer win32_logicaldisk -filter "drivetype=3" | select -Exp DeviceID
foreach ($drive in $drives) 
{
$drive = $drive.Substring(0,$drive.Length-1) + "$"
Get-ChildItem -Recurse -Force \\$computer\$drive -ErrorAction SilentlyContinue | Where-Object { ($_.PSIsContainer -eq $false) -and  ( $_.Extension -eq ".crypt") } | Select-Object Name,Directory| Export-Csv C:\FoundFiles.csv -nti -append
}
}
else 
{
$computer >> C:\OfflineComputers.txt
}
}

问题在于,这样做效率很低,速度很慢。在拥有 150 多个服务器和 50 多个客户端的网络上,可能需要数周时间才能完成。

您认为我该如何让它运行得更快?使用“调用命令”向每个服务器发送命令是否可行?我不需要实际的代码来执行此操作,只要有一个方向就足够了。

相关内容