Como tornar a pesquisa de arquivos do PowerShell mais rápida em uma rede inteira

1

Estou tentando pesquisar todas as unidades em todas as máquinas em uma rede AD e meus métodos não são muito eficientes. Basicamente, eu criei um script como esse, aqui está o que ele faz:

  1. obtém todos os computadores do AD.
  2. verifica se há conectividade WMI, registra a máquina para que eu possa cuidar disso.
  3. obtém todas as unidades físicas no computador.
  4. procura o arquivo em um compartilhamento remoto
$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
}
}

O problema é que isso é muito ineficiente e lento. Provavelmente, levará semanas para ser concluído em uma rede de mais de 150 servidores e mais de 50 clientes.

Como você acha que posso fazer isso mais rápido? Enviaria um comando para cada servidor com o trabalho "Invoke Command"? Eu não preciso do código real para fazer isso, apenas uma direção seria suficiente.

    
por user2629636 09.06.2016 / 23:31

0 respostas

Tags