Форум программистов, компьютерный форум, киберфорум
Наши страницы
PowerShell
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Within_t
33 / 20 / 11
Регистрация: 20.10.2013
Сообщений: 489
1

Вывод названий операционных систем для компьютеров, имена которых находятся в списке в текстовом файле

18.12.2015, 17:54. Просмотров 718. Ответов 2
Метки нет (Все метки)

Добрый вечер. Помогите разобраться (PowerShell стал изучать не давно).

По заданию в файле Spisok.txt находится список имен компьютеров, нужно их опросить и вывести название операционных систем.
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
..............
$ishod = "Microsoft Windows 7 Профессиональная"
$coun = 0
        
    try{   
            $ser = Get-Content C:\t\Spisok.txt
            $os  = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $ser
            foreach ($sProperties in $os)
            {  
                $val=$sProperties.Caption         
                $val = $val -replace $val, $ishod #имя ОС
                if($val -eq $ishod)
                {      
                    Write-Host $sProperties.__SERVER "-" $val -ForegroundColor Green
                }   
            }
       }
    catch [System.UnauthorizedAccessException]
    {
          Write-Host "Ошибка"
    }
Он работает (без try catch) только в том случае, если компьютер при проверки включен.
А как это обойти???

Выводит ошибку:
Код
Get-WmiObject : Сервер RPC недоступен. (Исключение из HRESULT: 0x800706BA)
строка:26 знак:22
+               $os  = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $s ...
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], COMException
    + FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2015, 17:54
Ответы с готовыми решениями:

Копирование определённого файла с каждого из удалённых компьютеров, имена которых указаны в текстовом файле
Добрый день, Может есть хороший человек который поможет достичь мне нужного...

Копирование заданного файла на все компьютеры в сети, IP-адреса которых находятся в списке в текстовом файле
Доброго времени суток. Требовалось создать *.bat файл, который осуществит...

Как узнать имена всех компьютеров, которые находятся в сети
НАРОДИЧЕК! Подскажите пож-ста! Как вывести в ComboBox имена всех компов...

Необходимо сделать перебор ip-адресов которые находятся в текстовом файле для подключение к серверу (while)
Нужно что бы через while программа перебирала ip в файле, и выход из цикла...

Одно оформление для всех операционных систем
Как сделать, чтобы оформление интерфейса было одинаковым во всех операционных...

2
FerFel
0 / 0 / 2
Регистрация: 24.12.2015
Сообщений: 3
21.01.2016, 15:43 2
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Привет!
Если задача вывести ОС, то сравнение никак не подходит.
Если надо ловить ошибку. то есть trap

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$Computers = Get-Content -Path C:\t\Spisok.txt
 
foreach ($Computer in $Computers){
    $TestConnection = Test-Connection -ComputerName $Computer -Count 1 -Quiet #Задает значение переменной $True или $False
    if ($TestConnection){
        $OS  = (Get-WmiObject -Class Win32_OperatingSystem -ComputerName $Computer).Caption
        if(($OS -eq $null) -or ($OS -eq '')){
            Write-Host $Computer "не удается определить ОС" -ForegroundColor Red
        }
        Write-Host $Computer "-" $OS -ForegroundColor DarkGreen
    }
    else{
        Write-Host $Computer "не ответил на ping" -ForegroundColor Red
    }
}
0
KDE777
835 / 618 / 262
Регистрация: 22.01.2016
Сообщений: 1,686
22.01.2016, 16:22 3
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Если речь идёт о доменных ПК, то получить такой список можно простым запросом в AD:

PowerShell
1
Get-ADComputer -SearchBase 'OU=Computers,DC=domain,DC=com' -Filter {OperatingSystem -like '*'} -Properties OperatingSystem | Format-Table -Property name,OperatingSystem
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2016, 16:22

Есть ли стандартные значения для препроцессора для разных операционных систем?
Допустим,необходимо сделать код на C более переносимым на другие операционные...

Циклическое выключение компьютеров, имена которых занесены в текстовый файл
Всем привет! Необходимо сделать скрипт, который будет отрабатывать...

Эта версия не предназначена для серверных операционных систем
привет всем. я поставил windows 7 x64 и хочу поставить антивирус NOD-32(х64) но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru