Получаем информацию текущем часовом поясе и наличии KB2998527 на компьютерах домена | Windows для системных администраторов

Получаем информацию текущем часовом поясе и наличии KB2998527 на компьютерах домена

В рамках задачи по переходу на зимнее время возникла необходимость сбора информации с большой группы ПК о наличии на них КВ2998527 и настройках текущего часового пояса. Эта задача в доменной среде может быть решена несколькими способами, но мы остановимся на возможностях, предоставляемых Poweshell. В этой статье мы приведем несколько методик удаленного опроса ПК и серверов домена  с помощью Powershell на предмет готовности инфраструктуры к переходу на зимнее время.

Самый простой и логичный вариант при отсутствии собственного сервера обновлений WSUS – опросить каждый компьютер и узнать, установлено ли на нем обновление КВ2998527. Простейший скрипт на Poweshell может выглядеть так:

get-content computers.txt | foreach { if ( !(Get-Hotfix -id KB2998527 -computername $_)) { add-content $_ -path Need-KB2998527.txt } }

Скрипт берет список ПК из текстового файла computers.txt и в случае, если в опрашиваемой системе не установлено обновление КВ2998527, имя такого компьютера заносится в файл Need-KB2998527.txt
Данный скрипт можно слегка модифицировать, чтобы он сам брал список компьютеров из нужной OU в Active Directory:

$GetPC = (Get-ADComputer -SearchBase "OU=Core,OU=Servers,OU=Net,dc=corp,dc=ru" -Filter {OperatingSystem -Like "*Windows *"}).name
$GetPC | foreach {
if ( !(Get-Hotfix -id KB2998527 -computername $_)) {
add-content $_ -path Need-KB2998527.txt
}
}

powershell get hotfix - информация об обновлениях на ПК

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

Однако, если в вашей сети еще остались компьютеры с Windows XP, эти скрипты не смогут предоставить достоверную информацию по ним, т.к. официальный патч для XP отсутствует, а для перехода стрелок придется воспользоваться методикой, описанной в статье «Переход на зимнее время в Windows XP».

В таком случае можно опросить компьютеры и получить с них настройки текущей временной зоны. Допустим в файле comps.txt  содержится список ПК, на которых нужно проверить параметры текущего часового пояс. Скрип по опросу тайм зон может выглядеть так:

Get-Content comps.txt | foreach {Get-WmiObject -class "win32_TimeZone" -ComputerName $_}| select-object –property __SERVER, Description, StandardName | Export-Csv result.csv -Delimiter ";"

В результате мы получаем csv файл, в котором содержатся список ПК и настройки часового пояса на них. Осталось загрузить этот CSV файл в Excel и с помощью фильтров найти компьютеры, часовая зона которых не изменилась (помечены желтым).

Получаем настройки часовых поясов с помощью poweshell

Удачного перевода стрелок :).

Еще записи по теме: PowerShell
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:

Комментариев: 20

Оставить комментарий
  1. Алексей | 24.10.2014

    Подскажите, разве в домене «по умолчанию» все компьютеры не должны синхронизироваться по тамй зоне с домен контролером автоматически?

    Ответить
    • itpro | 24.10.2014

      С NTP сервера (в данном случае имеется в виду контрллер домена) тайм зона не отдается. Только точное время. Часовой пояс — чисто локальна настройка.
      Представьте ситуацию, что контроллер домена обслуживает клиентов из разных регионов — как он поймет какую тайм зону кому отдавать?

      Ответить
  2. Алексей | 24.10.2014

    Выдает ошибку:
    Get-HotFix : Не удается проверить аргумент для параметра «ComputerName». Аргумент пустой или имеет значение NULL. Укажите непустой аргумент, не имеющий значение NULL, по
    сле чего повторите выполнение команды.
    строка:3 знак:47
    + if ( !(Get-Hotfix -id KB2998527 -computername $_)) {

    Ответить
    • itpro | 24.10.2014

      Проверьте, что в указанном файле (он кстати имеется? проверьте путь к файлу в случае необходимости укажите полный путь в виде c:\tmp\computers.txt) строка с именем компьютера не содержит пробелов или служебных символов в начали и конце

      Ответить
    • Роман | 26.10.2014

      Я для себя подправил скрипт так:
      $GetPC = (Get-ADComputer -SearchBase «dc=corp,dc=dom» -Filter { OperatingSystem -Like «*Windows *» })
      $GetPC | foreach {
      if ( !(Get-Hotfix -id KB2998527 -computername $_.Name)) { add-content $_.Name -path Need-KB2998527.txt } }

      Ответить
      • Роман | 26.10.2014

        Да, и в начале скрипта подгружается модуль:
        Import-Module ActiveDirectory
         

        Ответить
  3. fiction | 24.10.2014

    Get-Hotfix : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

    вот такое выдает

    Ответить
    • itpro | 24.10.2014

      Какой скрипт используете?
      Судя по ошибке — опрашиваемый ПК недоступен/не существует/ неправильное имя (строка не должна содержать пробелы и служебные символы)
       

      Ответить
  4. Владимир | 24.10.2014

    В Export-Csv «для красоты» стоит добавить параметр -NoTypeInformation

    Ответить
  5. Юра | 27.10.2014

    День добрый! Не подскажете почему у меня всё ругается на отсутствие файла comps.txt?! Хотя он там есть
     
    Get-Content : Не удается найти путь «D:\comps.txt», так как он не существует.
    строка:1 знак:12
    + Get-Content <<<<  comps.txt | foreach {Get-WmiObject -class «win32_TimeZone» -ComputerName $_}| select-object -proper
    ty __SERVER, Description, StandardName | Export-Csv result.csv -Delimiter «;»
    + CategoryInfo          : ObjectNotFound: (C:\Windows\system32\comps.txt:String) [Get-Content], ItemNotFoundExcept
    ion
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
     
    Заранее спасибо!

    Ответить
  6. Игорь | 27.10.2014

    Здравствуйте. Получили мы список компов, на которых еще не установлен update КВ2998527. А что дальше? Как автоматически это обновление проставить? Сервера Wsus в домене нет.

    Ответить
  7. Игорь | 27.10.2014

    Здравствуйте. А как потом автоматически поставить обновление на те компьютеры, на которых часовой пояс не изменился?
    Сервера Wsus в домене нет.

    Ответить
    • Юра | 27.10.2014

      А я решил не заморачиваться, не терять лишние драгоценные минуты и просто вот из этой темы: http://winitpro.ru/index.php/2014/10/10/perexod-na-zimnee-vremya-v-windows-xp/ взял очень уж простенькую инструкцию плюс используя простенький инструмент PsExec к ней, поправил время на всех компах (около 50) с места, не выходя и кабинета. Чего и рекомендую Вам

      Ответить
      • Игорь | 27.10.2014

        У меня машин c XP в домене нет, все Win7. Просто через PsExec ставим удаленно патч на компьютеры?

        Ответить
        • itpro | 28.10.2014

          Можно и через PSExex, но по мне гораздо проще через логон скрипт групповой политики

          Ответить
  8. Игорь | 28.10.2014

    Не получается через PSExeс.
    Запускаю c:>psexec \\192.168.0.5 cmd /c c:\temp\upda
    te_32.bat. В батнике прописан путь к файлу Windows6.1-KB2998527-x86.msu, который является обновлением для Windows 7 32.bit. В итоге, пишет ошибку «»c:\temp\update_32.bat» не является внутренней или внешнейкомандой, исполняемой программой или пакетным файлом.
    cmd exited on 192.168.0.5 with error code 1.

    Ответить
    • dimokkk | 28.10.2014

      Покажите содержимое bat-файла…
      Надеюсь, файлы update_32.bat и Windows6.1-KB2998527-x86.msu предварительно скопированы в папку c:\temp\ на клиенте?
      Вообще, установить обновление всего одной командой:
      wusa.exe \\server1\share\Windows6.1-KB2998527-x86.msu /quiet /norestart
       
       

      Ответить
      • Игорь | 28.10.2014


        Нет, файлы находятся на моем локальном компьютере. Я же использую ключ /c, который нужен, чтобы выполнить на удаленной системе файл с моего локального диска.

        Ответить
        • Владимир | 28.10.2014

          Ключ -c предназначен для копирования необходимых файлов на удаленную систему и их запуска там же. Но никак не для запуска файлов с Вашего локального компьютера

          Ответить
    • itpro | 28.10.2014

      Если с GPO не срастается и хочется именно PSexec, предложу такой вариант:
      psexec \\192.168.0.5 "\\FileServer1\Share\Win7\Windows6.1-KB2998527-x86.msu"
      Файлы с обновлениями нужно предварительно сложить на указанную шару

      Ответить
Полные правила комментирования на сайте winitpro.ru. Вопросы, не связанные с содержимым статьи или ее обсуждением удаляются.

Сказать Спасибо! можно на этой странице или (еще лучше) поделиться с друзями ссылкой на понравившуюся статью в любимой социальной сети(специально для этого на сайте присуствуют кнопки популярных соц. сетей).

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)