Advertisement
ve1l

check_programs_online_pc

Oct 26th, 2021
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. $computers = (Get-ADComputer -Filter {Enabled -eq $True}).Name
  2.  
  3. $computers_online = @()
  4. $computers_offline = @()
  5.  
  6. foreach ($computer in $computers){
  7. # Проверка доступности компьютера 1 ICMP пакетом и исключение Warning сообщений
  8. $result = Test-NetConnection `
  9. -ComputerName $computer `
  10. -Hops 1 `
  11. -WarningAction Ignore `
  12. -ErrorAction SilentlyContinue
  13. # Если пинг прошел, он будет добавлен в список online, иначе в offline
  14. if ($result.PingSucceeded -eq $True){
  15. $computers_online += $computer
  16. }
  17. else {
  18. $computers_offline += $computer
  19. }
  20. }
  21. Write-Output "Компьютеры онлайн: "$computers_online
  22. Write-Output "Компьютеры оффлайн: "$computers_offline
  23.  
  24. function Get-Programs {
  25. # Эта часть принимает имена компьютеров через конвейер (значение по умолчанию localhost)
  26. [cmdletbinding()]
  27. Param (
  28. [parameter(ValueFromPipeline=$True)]
  29. [string]
  30. $ComputerName = 'localhost'
  31. )
  32. process {
  33. # Эта команда выполняет подключение и получает список программ
  34. $all_programs = Invoke-Command -ComputerName $ComputerName `
  35. -ScriptBlock {
  36. $reg_path = Get-ChildItem `
  37. -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\'
  38. # Форматируем вывод
  39. $reg_path | Get-ItemProperty | `
  40. Where-Object 'DisplayName' | `
  41. Select 'DisplayName','DisplayVersion'
  42. }
  43. # Дополняем наш список именем компьютера с которого он был получен
  44. foreach ($program in $all_programs){
  45. $program | Add-Member -Name 'ComputerName' `
  46. -Value $ComputerName `
  47. -MemberType NoteProperty
  48. }
  49. # Возвращаем список
  50. return $all_programs
  51. }
  52. }
  53.  
  54. #$exclude_programs = @('*Vmware*',
  55. # '*Visual*2019*')
  56.  
  57. $programs = $computers | Get-Programs -ErrorAction SilentlyContinue -ErrorVariable computers_offline
  58. #$excluded = $programs | Exclude-Programs -ExcludeList $exclude_programs
  59. Export-Csv -InputObject $programs -Path 'C:\BOX\programs.csv' -NoTypeInformation
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement