• Количество отправленных и полученных писем по дням

      Возникла потребность просмотреть на сервере exchange сколько писем отправляют и получают пользователи по дням со статистикой в мегабайтах, после изучения интернета был найден скрипт Nuno Mota не устроило что скрипт делает текстовый вывод, что не удобно для постоянного использования и для генерации html отчетов. Скрипт был переработан:

      • вывод сделан объектами
      • добавлены поля
      • исправлен баг когда первая запись выводилась неправильно


      Получение количества отправленных и полученных писем по дням с exchange сервера.
      Читать дальше →
    • PowerShell. Пользовательские функции для пользователей

      Привет! Довольно часто в своей работе приходиться пользоваться самостоятельно написанными функциями и таскать куски кода между разными скриптами. На Хабре уже есть довольно хорошая статья про Повторное использование кода от Mroff, но была необходимость пойти немного дальше, задокументировать и как-то описать свои функции. Как оказалось, поиск выдавал довольно сухую информацию в основном по общей структуре функции и не более того. Упорство было вознаграждено, и я решил поделиться полученной информацией. Добро пожаловать под кат, где мы научимся вносить в свои функции информацию для потомков и коллег.
      Читать дальше →
      • +15
      • 21,8k
      • 8
    • Автор сurl просит Microsoft удалить алиасы curl и wget из PowerShell



        Позавчера компания Microsoft опубликовала исходный код PowerShell. Таким образом, это средство автоматизации и конфигурирования на базе .NET Framework стало доступным под Linux.

        Некоторые скептически относятся к стратегии «Microsoft любит Linux», которую декларирует редмондский гигант. Кое-кто считает, что консоль от Microsoft не нужна в операционной системе, в которой есть bash. Обычно это просто эмоциональные высказывания, но есть и вполне рациональные аргументированные возражения по существу. Например, разработчик программы curl Дэниель Стэнберг (Daniel Stenberg) вполне логично говорит, что наличие внутри PowerShell одноимённого алиаса curl, а также wget совершенно неуместно, потому что мешает запустить нормальные привычные программы.
        Читать дальше →
      • Автоматизация установки обновлений на клиентскую машину с отсевом ошибочных обновлений

          Раз в год выходит обновление ломающее привычную работу. Windows пытается поставить его 3 раза, и если 3 раза был откат то она загружается без установки. Пользователи с утра начинают звонить. Если ничего не предпринять то на следующее утро ситуация повторится.
          • На WSUS сервере нет смысла перемещать его в Unapproved т.к. патч уже скачан на клиенскую машину и находится в папке SoftwareDistribution, надо удалять вручную
          • глючных патчей может быть много
          • через пол годика админ может по запарке его снова одобрить
          • если одобряем раз в полгода-год, отсев плохих от хороших займет до 1 дня работы на 1 машину (класс машин)
          • обновления одной конфигурации могут не подходить для другой конфигурации даже если ОС одна
          • состояние обновления скрытое будет сброшено если удалить SoftwareDistribution
          • SoftwareDistribution надо скидывать если глюкнула база, слишком долго идет поиск, а лучше делать это периодически

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

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

          Сразу оговорюсь — данный скрипт не умеет ремонтировать систему которая не загружается вообще, он умеет сам ставить обновления, в автоматическом режиме выкидывать обновы вызывающих циклическую перезагрузку, имеет возможность вручную добавить плохие обноления в список и сигнализировать админу о возникших неполадках с установкой.
          Читать дальше →
        • PSReadLine устанавливаем подсветку синтаксиса в консоль PowerShell

            Владельцы windows 10 могут наслаждаться подсветкой синтаксиса в консоли PowerShell. В предыдущих версиях подсветка не появится даже если установить WMF5. Она реализуется модулем PSReadLine. Этот модуль позволяет делать разную подсветки Emac подобную или Vim, добавлять команды и т.п., добавляет поиск в истории, собственные шоткаты и т.п. Далее описывается как установить подсветку в консоль PowerShell для предыдущих версий windows.

            1. установка на Win 8.1 и 2012R2 если у Вас уже установлен WMF5
            Первое что нужно сделать это скачать модуль подсветки из хранилища OneGet командлетом Find-Package если до этого он не использовался то попросит скачать и установить менеджер пакетов NuGet
            Читать дальше →
          • Автоматизация администрирования систем, обзор проблем и вариант решения. Ed Wilson

            • Перевод
            Ниже перевод части главы 1 книги Powershell and WMI. Освещается направление развития информационных систем применительно к системному администрированию. Дается взгляд Ed Wilson на проблемы эксплуатационщиков, указывается направление снижения расходов обслуживания инфраструктуры.

            Solving administrative challenges


            Спросите любого администратора Windows о его проблемах, и в верхней части списка будет большое количество работы и постоянная нехватка времени чтобы сделать ее. Они знают о средствах автоматизации, возможно даже осведомлены о возможностях WMI и Powershell, но у них нет времени чтобы освоить эти технологии. Это позорная ситуация, потому что принято считать, что до 70% бюджета ИТ организации расходуется на то «чтобы все было в рабочем состоянии» (прим переводчика: в оригинале “keep the lights on.”). Автоматизация может сократить расходы из этих 70%, за счет чего освободятся время и деньги для задач дальше по списку «проблем».

            Кроме того, возможно, что они интересовались WMI или Powershell и пришли к выводу, что эти инструменты слишком сложны для освоения. Это понятно, особенно учитывая трудоемкость работы с WMI через VBScript, а также отсутствие примеров, которые объясняли бы используемые приемы. Даже меня повергают в ужас некоторые примеры скриптов Powershell размещенные в интернете, что же чувствуют те, кто только начали разбираться с этой темой. Администраторы, отказавшись от использования этих инструментов упускают возможности уменьшить свою рабочую нагрузку, упускаю возможность провести автоматизацию своих процессов.

            Снизить планку входа к использованию WMI ставилось целью этой книги. Примеры предоставляемые в ней могут быть использованы без изменений или с минимальным их количеством. Кроме того, вы получите более глубокое понимание WMI, которое может быть использовано для работы с областями ранее недоступными для вашего контроля. PowerShell сконструирован так, чтобы сделать использование WMI проще и понятнее чем в скриптовых языках ранее, PowerShell движок автоматизации от Microsoft, которая, помимо всего прочего, обеспечивает облегченный доступ к богатым наборам инструментов управления, доступных в WMI.
            Читать дальше →
          • Создание отчетов в PowerShell

            • Перевод
            • Tutorial
            Рассмотрены вопросы вывода текста, создания отчетов, отправки почты. Даются советы как писать отчеты так чтобы много раз можно было использовать фрагменты кода, добавить недостающие фрагменты, и собирать в отчет большей длины.
            Однозначно нужно всем кто делает сбор информации используя PowerShell, или хочет научится его эффективному применению.

            Секреты создания отчетов Глава 33


            Эта глава содержит
            1. Работа с HTML фрагментами
            2. Создание стильных HTML отчетов
            3. Отправка отчетов поэлектронной почте


            В этой главе мы рассмотрим приемы работы с PowerShell при создании отчетов. PowerShell не блещет если нужно работать со строками, старайтесь использовать для этого объекты. Чем больше вы будете использовать при создании отчетов объекты, тем лучше вы сможете сделать обработку.

            33.1 Что не нужно делать.
            Начнем главу с того что мы считаем примером плохой техники создания отчетов. Мы постоянно встречаем такой стиль. Большая часть IT профессионалов не задумываются об этом и увековечивают в коде стиль из других языков, таких как VBScript.
            Следующий код написан в стиле, который как мы надеемся вы не будете применять, и который вы увидите в коде менее информированных системных администраторов.
            Читать дальше →
            • +11
            • 25k
            • 1
          • Foreach — из книги PowerShell in depth

            • Перевод
            Глава 19.3. В ней описывается конструкция Foreach, как ее применять.

            Эта конструкция имеет те же цели что и командлет ForEach-Object. Командлет ForEach-Object имеет алиас ForEach, который легко спутать с оператором ForEach… потому что они имеют абсолютно одинаковые имена. PowerShell смотрит на контекст чтобы выяснить, какой же Foreach применяется сейчас. Вот пример того, как оператор, и командлет делают одно и тоже
            Get-Service –name B* | ForEach { $_.Pause() }
            
            $services = Get-Service –name B*
            ForEach ($service in $services) 
            {
                $service.Pause()
            }
            

            Читать дальше →
          • превратить string в scriptblock

            • Перевод
            Если вы используете powershell то вы могли заметить что нельзя отправить строку на удаленную машину через Invoke-Command

            Вам нужно предварительно сконвертировать строку в скриптблок
            $scriptBlock = [Scriptblock]::Create($string) 
            

            пример:
            $remoteCommand = @" Import-Module ActiveDirectory
                              New-ADOrganizationalUnit -name
                              "@
             
            $scriptBlock = [Scriptblock]::Create($remoteCommand)
             
            Invoke-Command -ComputerName AD01 -ScriptBlock $scriptBlock
            

            Читать дальше →
          • PowerShell Remoting — настройка и удаленное управление

            • Tutorial
            Здесь минимум теории, в основном практическая часть. Описывается как настроить WinRM, как изменить профиль сетевого адаптера, дается скрипт по добавлению в TrustedHosts с фильтрацией, объясняется зачем нужны доверенные хосты, и рассматриваются поверхностно удаленные подключения так чтобы можно было сесть и сразу админить удаленные машины.

            Наиболее простой путь сконфигурировать удаленное управление это выполнить Enable-PSRemoting в оболочке powershell с правами администратора. При этом произойдет следущее:
            • запустится служба WinRM (если запущена перезапустится)
            • служба WinRM перейдет в состояние — автоматический запуск при старте
            • будет создан прослушиватель WinRM для HTTP трафика на порту 5985 для всех локальных IP адресов
            • будет создано правило файрвола для прослушивателя WinRM. Внимание, этот пункт завершится с ошибкой если любая из сетевых карточек имеет тип сети «публичная», т.к. открывать порт на такой карточке не хорошо. Если у вас при конфигурировании вышла такая ошибка измените профиль это сетевушки командлетом Set-NetConnectionProfile и после этого запустите Enable-PSRemoting снова. Если вам нужна сетевая карточка с профилем «Публичная сеть» запустите Enable-PSRemoting с параметром -SkipNetworkProfileCheck в этом случае будут созданы правила файрвола только из локальной сети.

            Читать дальше →

          Самое читаемое