пʼятниця, 27 вересня 2019 р.

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


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

поиск программ на компьютерах домена powershell progressbar поиск софта на компьютерх домена поиск софта на компах AD

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..." # ожидаем нажатия (нужно чтобы после отработки скрипта окно не закрылось, и мы успели увидеть результат)


Собственно всё :)


Следующие сообщения Предыдущие сообщения Главная страница