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:
$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.
Tags powershell