Как стать автором
Обновить
7
0
Александр @aenikitin

Ведущий инженер

Отправить сообщение
Воу… если так то прошу прощения. Щя изыщу способ для 2008R2/7. У меня и вправду Windows 10. =))))

Вот лопух то…
В коде забыл у Get-WmiObject указать -ComputerName $_.Name. Прошу прощения еще раз. Писал без проверки кода.
Разве foreach -Parallel выполняется вне workflow? Не смущайте новичка такими нюансами без пояснений, что ли…
Раз уж вы начинающий, подскажу как оптимизировать ваше художество. Ничего, я и сам начинал с подобного.

1. Вместо Where-Object {} можете использовать альяс ?{}. А вместо Select-Object просто select. Имена свойств можно указывать без аргумента -Property. Этот аргумент удобно использовать для просмотра всех свойств объекта, например | select -Property *
2. Зачем вам в Get-AD(Object, Computer,User,Group) аргумент Filter? Вы выбрали все станции, а потом отсортировывали не выключенные станции через Where-Object проделывая, считай, двойную работу. Читай вы внимательно хелп к командлетам (это кстати можно удобно делать через Get-Help -Online), узнали бы что получить сразу не выключенные станции можно так:
$enablePCs = Get-ADComputer -Filter {enabled -eq $true}

3. Пинг компьютера вам уже подсказали выше можно было бы сделать через Test-Connection. Уточню лишь, что используя этот командлет вне условия if вы рискуете получить не булевый результат, а массив с результатами теста, по этому если вам нужно получить результат пинга в булеву переменную используйте аргумент -Quiet.
4. Получить наличие хрома на компьютере действительно лучше посредством WMI-запроса. Командлет для всех WMI запросов один — это Get-WMIObject. Необходимый командлету параметр это -Class. Что бы получить список WMI классов можно воспользоваться свитчем -List. Нужный нам для нашей задачи класс — Win32_InstalledProgram. Ну а полный запрос наличия хрома будет выглядеть так:
Get-WmiObject -Class Win32_InstalledProgram -ComputerName <computername>  | ?{$_.Name -like "*Chrome*"} | select Name, Version, Vendor

Итого, если не заниматься ерундой с выводом в консоль получается вот такой лаконичный код:
$enablePCs = Get-ADComputer -filter {enabled -eq $true} -SearchBase "OU=Computers,ou=someou,dc=somedomain,dc=corp"
$sumchrome = 0
$sumreacheblePC = 0
$sumunreacheblePC = 0
$pcwithoutchrome = 0

$enablePCs | ForEach-Object {
    if(Test-Connection -ComputerName $_.Name){
        $sumreacheblePC++
        if((Get-WmiObject -Class Win32_InstalledProgram | ?{$_.Name -like "*Chrome*"}) -ne $null){$sumchrome++}else{$pcwithoutchrome++}
    } else {$sumunreacheblePC++}
}


Он чутка сложнее для понимания новичками, так как не использует развернутую конструкцию foreach и можно легко запутаться в ссылках на текущий объект ($_). Но мне нравится как такой код выглядит. Прошу прощения за помпезность. ;-)
а на ноль он поделил, потому что глючная память вернула ноль вместо данных.
Вообще-то в последних релизах серверных ОС и серверных продуктах от МС как раз все делается через powershell, а вокруг powershell рисуется гуй. Очень хорошо это видно на System Center 2012.
А copy, move и del конечно там никогда не было, да?
2014 это 15.0, а 14.0 это 2010
Скачайте Powershell 5 (пока еще бета вроде) там уже есть затравка на репозиторий. ;-)
Просто эти парни привыкли выкатывать хорошие продукты, оптимизированные и оттестированные. А не как Ubisoft…
Господи, ну когда вы уже перестанете кликать и возить мышкой, а начнете быстро и продуктивно работать — набирая нужное в поиске через Win + «первые буквы программы» или использовать Win+Q, раз уж так хочется «сохранять видимость рабочего стола»… Что в Win7 что в Win8 использовал только поиск, а когда тебе нужно визуально поискать программу, так как ты не знаешь ее названия — что список в Win7 что плитки в Win8 — разницы никакой.
И действительно — в Майкрософт же с 90х ничего не изменилось… =)
Корпоративное средство коммуникации в понимании Microsoft — это Outlook + Lync. Зачем отправлять в Lync оффлайн сообщение, если по сути это письмо, которое вы можете отправить в Outlook. Зачем функции одной программы переносить в другую программу? Lync для онлайн сообщений, Outlook для оффлайн. Вроде все просто.
Не нужно иронизировать, Microsoft отказалась от создания Service Pack для Windows и продуктов System Center (там сейчас только Update Rollups).
Что то вы путаете.
Если посмотреть вот сюда, то явно видно что ограничение 32ГБ оперативной памяти есть у самых младших версиё Standard/WebServer (про Foundation вообще не говорим). Enterprise же ограничена 64ГБ в 32 разрядной редакции и 1 ТБ в 64 разрядной (для R2 — 2ТБ).
2008 можно. Для этого есть DISM.
Win2012 прекрасно активируется через Server Manager.

Апгрейд между версиями (я так понимаю вы имеетие ввиду Standard — Datacenter) возможен только в сторону повышения — от Std к DC, что собственно было и в Win 2008/R2 там только путь был длиннее Std — Ent -DC. Ничего странного в этом не вижу.
Ну так… мало ли. Есть ведь и чувствительные люди. =)

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург и область, Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

System Administration
Lead
Vmware vSphere
VMware
PowerShell
Ansible