Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $computers = (Get-ADComputer -Filter {Enabled -eq $True}).Name
- $computers_online = @()
- $computers_offline = @()
- foreach ($computer in $computers){
- # Проверка доступности компьютера 1 ICMP пакетом и исключение Warning сообщений
- $result = Test-NetConnection `
- -ComputerName $computer `
- -Hops 1 `
- -WarningAction Ignore `
- -ErrorAction SilentlyContinue
- # Если пинг прошел, он будет добавлен в список online, иначе в offline
- if ($result.PingSucceeded -eq $True){
- $computers_online += $computer
- }
- else {
- $computers_offline += $computer
- }
- }
- Write-Output "Компьютеры онлайн: "$computers_online
- Write-Output "Компьютеры оффлайн: "$computers_offline
- function Get-Programs {
- # Эта часть принимает имена компьютеров через конвейер (значение по умолчанию localhost)
- [cmdletbinding()]
- Param (
- [parameter(ValueFromPipeline=$True)]
- [string]
- $ComputerName = 'localhost'
- )
- process {
- # Эта команда выполняет подключение и получает список программ
- $all_programs = Invoke-Command -ComputerName $ComputerName `
- -ScriptBlock {
- $reg_path = Get-ChildItem `
- -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\'
- # Форматируем вывод
- $reg_path | Get-ItemProperty | `
- Where-Object 'DisplayName' | `
- Select 'DisplayName','DisplayVersion'
- }
- # Дополняем наш список именем компьютера с которого он был получен
- foreach ($program in $all_programs){
- $program | Add-Member -Name 'ComputerName' `
- -Value $ComputerName `
- -MemberType NoteProperty
- }
- # Возвращаем список
- return $all_programs
- }
- }
- #$exclude_programs = @('*Vmware*',
- # '*Visual*2019*')
- $programs = $computers | Get-Programs -ErrorAction SilentlyContinue -ErrorVariable computers_offline
- #$excluded = $programs | Exclude-Programs -ExcludeList $exclude_programs
- Export-Csv -InputObject $programs -Path 'C:\BOX\programs.csv' -NoTypeInformation
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement