четверг, 3 декабря 2015 г.

Powershell-скрипт, вычисляющий место в папках (из csv-файла)

Скрипт вычисляет место в расшаренных папках ( \\share-pc\share\dir1\ ....)

Формат данных в источнике: 

Script

cls 

$dir = 'C:\Temp\'
$sourceFile='folders.csv'  # import cvs-file
$destFile='result.csv' # export cvs-file

$Csv = Import-Csv $dir$sourceFile
$dest=$dir+$destFile 
$prj_sec = 0
$row = 0


if (Test-Path -Path $dest)
{
    Remove-Item $dest
}

foreach ($folder in $Csv.DropLocation) {
    
    $sec=0
    $row = $row + 1
    $check = 0
    $time_text= Get-Date -Format 'HH:mm:ss' 

    $check = (Test-Path -Path "\\$folder" )

    write-host ' |' $row '| '  -nonewline
    
    if ($check) { write-host \\$folder -nonewline }
        else { write-host \\$folder -nonewline -foregroundcolor gray } # folder not exist

    if ($check)
    {
        $sec=(measure-command {
        $items = (Get-ChildItem "\\$folder" -recurse | Measure-Object -property length -sum) 
        "$folder; {0:N2}" -f ($items.sum / 1MB) | Out-File $dest -append
        }).totalseconds
    }
        
    $sec_f= "{0:N2}" -f $sec

    if ($check) 
    { 
        $space = $items.sum / 1024 / 1024
        $space_f= "{0:N2}" -f $space
        write-host ' | ' -NoNewline
        write-host $space_f 'mb' -NoNewline -foregroundcolor green 
        write-host ' | ' -NoNewline
        write-host $sec_f -NoNewline -foregroundcolor red 
        write-host ' | '
    }
        else { write-host ' ' }

    $prj_sec += $sec
}
$prj_sec = "{0:N2}" -f $prj_sec

    write-host 
    write-host  'Processing Time: ' -nonewline                     
    write-host $prj_sec -nonewline -foregroundcolor Red 
    write-host ' sec.'

понедельник, 31 августа 2015 г.

lansweeper - управление инфраструктурой

Лёгкий способ мониторить небольшую IT-инфраструктуру - www.lansweeper.com







вторник, 23 июня 2015 г.

WinDirStat - просмотр места на диске

WinDirStat - утилита для просмотра статистики использования дискового пространства и его очистки. WinDirStat сканирует дерево каталога и предоставляет статистику в трёх полезных видах: Список каталогов, имеет сходство с видом проводника Winodows, но сортировка существляется по размеру каталога (файла) Карта каталогов, которая отображает полное содержание дерева каталогов в графической форме Список расширений, который служит в качестве легенды и показывает статистику о типах файлов.

Ссылка: https://windirstat.info/
Скачать: http://www.fosshub.com/WinDirStat.html


понедельник, 27 апреля 2015 г.

Не отображаются отчёты SQL Reporting Services (SSRS) в Chrome

Есть несколько вариантов исправления этой баги. Для SSRS 2012 я исправил следующим способом..

Необходимо в начало файла:
C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportManager\js\ReportingServices.js
добавить следующую функцию:


function pageLoad() { 
    var element = document.getElementById("ctl32_ctl09");
    if (element) 
    {
        element.style.overflow = "visible";         
    } 
}
Для версий SSRS ниже 2012, нужно заменить в вышеприведённой функции ctl32_ctl09 на ctl31_ctl10.

После этого, все отчёты на данном экземпляре SSRS стали открываться в Chrome.

ps: может потребоваться очистка кэша браузера.

среда, 15 апреля 2015 г.

Пример создание события в журнале Windows через PowerShell

Вариант №1. Команда EventCreate

Пример:
Eventcreate /t Information /id 101 /l application /d "Create event in application log"

Вариант №2

PS > New-EventLog –LogName Application –Source “My Events”
PS > Write-EventLog -LogName Application -Source "My Events" -EntryType Information -EventId 12345 -Message "test event"

, где
-EntryType может иметь значения "Information", "Error", "Warning", ..
Для создания события на определённом компьютере можно использовать параметр -ComputerName.


понедельник, 2 февраля 2015 г.

Чему хороший ПМ может поучится у врача?


Чему хороший ПМ может научиться у хорошего врача? from stratoplan on Vimeo.

Выступление Ивана Селиховкина на онлайн-конференции Стратоконф-1.

среда, 25 июня 2014 г.

Синхронизация доменной группы с группой TFS


Скрипт, который позволяет синхронизировать доменную группу или группу рассылки с TFS-группой.

Этот скрипт полезен для сценария, когда у вас есть группа рассылки Active Directory, для которой необходимо настроить права доступа в TFS. На TFS нет возможности настройки прав для группы рассылки, поэтому я использую этот скрипт для синхронизации всех учёток из группы рассылки с группой TFS, у которой уже есть необходимые права доступа.

Сценарий.
В моём сценарии группа "TFSUsers" это группа рассылки Active Directory, для участников которой требуется настроть доступ в TFS, а именно, дать им разрешения TFS-группы "Collection Readers". Для этой группы рассылки владельцем назначен руководитель отдела разработки, который может легко менять состав  группы через Outlook. Это является ключевым преимуществом перед группой безопасности (security group) Active Directory, т.к. в группе безопасности чтобы дать права на управление составом, необходимо запрашивать доступ у системных администраторов домена, к тому же руководителю отдела разработки придётся ставить у себя на рабочем ПК консоль Active Directory.
Скрипт создаёт в TFS группу "Users", в которую добавляет всех участников группы рассылки Active Directory - "TFSUsers". После этого в TFS добавляет группу "Users" в группу "Collection Readers" у которой уже есть необходимые права доступа. Этот скрипт можно запускать по расписанию, чтобы синхронизация групп была в актуальном состоянии.


      cls

      # Url TFS-коллекции
      $col='http://tfs:8080/tfs/Collection' 

      $adgroup='TFSUsers' 
      $group = "Users"

      .\TFSSecurity /gd $group /collection:$col  #удалить группу
      .\TFSSecurity /gcg $group /collection:$col #создать группу
      .\TFSSecurity /collection:$col /g+ "Collection Readers" n:$group /collection:$col #добавить группу в существующую TFS-группу



      Import-Module ActiveDirectory
      $users=GET-ADGROUPMEMBER $adgroup -recursive | SELECT-OBJECT SamAccountName


      foreach ($p in $users)
      {
          $user=$p.SamAccountName    
          .\TFSSecurity /collection:$col /g+ $group n:$user /collection:$col
      }

четверг, 19 июня 2014 г.

12 принципов Agile-манифеста

  1. ​​Наивысшим приоритетом для нас является удовлетворение потребностей заказчика, благодаря регулярной и ранней поставке ценного программного обеспечения.
  2. Изменение требований приветствуется, даже на поздних стадиях разработки. Agile-процессы позволяют использовать изменения для обеспечения заказчику конкурентного преимущества.
  3. Работающий продукт следует выпускать как можно чаще, с периодичностью от пары недель до пары месяцев.
  4. На протяжении всего проекта разработчики и представители бизнеса должны ежедневно работать вместе.
  5. Над проектом должны работать мотивированные профессионалы. Чтобы работа была сделана, создайте условия, обеспечьте поддержку и полностью доверьтесь им.
  6. Непосредственное общение является наиболее практичным и эффективным способом обмена информацией как с самой командой, так и внутри команды.
  7. Работающий продукт — основной показатель прогресса.
  8. Инвесторы, разработчики и пользователи должны иметь возможность поддерживать постоянный ритм бесконечно. Agile помогает наладить такой устойчивый процесс разработки.
  9. Постоянное внимание к техническому совершенству и качеству проектирования повышает гибкость проекта.
  10. Простота — искусство минимизации лишней работы — крайне необходима.
  11. Самые лучшие требования, архитектурные и технические решения рождаются у самоорганизующихся команд.
  12. Команда должна систематически анализировать возможные способы улучшения эффективности и соответственно корректировать стиль своей работы.​
Источник: www.agilemanifesto.org