Поиск устаноленного TeamViewer на компьютерах домена(PowerShell)

1) Ищем все компьютеры домена в OU, которые enabled
cls
$TargetOU = "OU=workstations,DC=corp,DC=local"
$enablePCs = Get-ADComputer -filter * -SearchBase $TargetOU | Where-Object {$_.enabled -eq $true} | Select-Object -Property Name
2) Создаём объект, наделяем его свойствами, объявляем массивы и обнуляем переменные
$object = [pscustomobject]::@{Name1 = Value1; Name2 = Value2}
$sumunresolvePC = 0
$unresolvePC = @()
$sumTeamViewer = 0
$TeamViewerPC = @()
$sumunreacheblePC = 0
$unreacheblePC = @()
$TotalPCs = $enablePCs.count # общее количество компьютеров в OU
$PCcounter = 1 # счётчик прогрессбара
3)Начинаем цикл обработки объектов в массиве $enablePCs
foreach ( $i in $enablePCs )
{
$error.Clear() #очищаем буфер ошибок Powershell
$erroractionpreference = "silentlycontinue" #подавляем вывод ошибок в консоль
$dnsresult = 0
$computername = $i.name #извлекаем имя станции
$dnsresult = [System.Net.Dns]::resolve("$computername")
if (!$error) #условие, если предыдущая команда не была завершена ошибкой
{
$ipaddress = $dnsresult.AddressList
$pingfunc = (New-Object system.net.networkinformation.ping).send("$ipaddress") #ping
if ($pingfunc.Status -eq "success")
{
$teamViewer = "\\$computername\C$\Program Files (x86)\TeamViewer\TeamViewer.exe"
If (Test-Path -Path $teamViewer) {
$TeamViewerPC += [PSCustomObject]@{Host=$computername; IP=$ipaddress.IPAddressToString} #записываем найденные хосты в массив вместе с их IP
$sumTeamViewer++ #плюсуем количество станций с TeamViewer
}
else {
#ничего не делаем т.к. эта инфа не нужна, но можно например вывести так:
#Write-Host " $computername TeamViewer не обнаружен" -ForegroundColor Green
}
}
else {
$unreacheblePC += [PSCustomObject]@{Host=$computername; IP=$ipaddress.IPAddressToString}
$sumunreacheblePC++}
}
else {
$unresolvePC += $computername
$sumunresolvePC++}
#создадим ProgressBar хода выполнения проеврки скриптом для наглядности
#вычисляем процент выполнения
$percentComplete = ($PCcounter / $TotalPCs) * 100
# сам прогрессбар с параметрами
Write-Progress -Activity "Поиск установленного TeamViewer на компьютерах $TargetOU" -Status "Проверено $PCcounter из $TotalPCs компьютеров" -PercentComplete $percentComplete
$PCcounter++
}
# Теперь выведем все результаты в наглядном виде
Write-Host "TeamViewer обнаружен на $sumTeamViewer компьютерах" -ForegroundColor Red
$TeamViewerPC | FT -AutoSize
Write-Host "###################################################" -ForegroundColor Cyan
Write-Host "Unreachable host(s) $sumunreacheblePC" -ForegroundColor Cyan
$unreacheblePC | FT -AutoSize
Write-Host "###################################################" -ForegroundColor Yellow
Write-Host "Could not resolve $sumunresolvePC hosts(s)" -ForegroundColor Yellow
Write-Host $unresolvePC -ForegroundColor Yellow
Read-Host -Prompt "Press Enter to exit..." # ожидаем нажатия (нужно чтобы после отработки скрипта окно не закрылось, и мы успели увидеть результат)
Собственно всё :)