Вчера вечером, срочно потребовалось установить драйверы для принтера HP Laserjet 1012 на свежую операционную систему, установленную днём раньше. Ребята забыли, а позвонили мне, как единственному рядом с компьютером в 7 часов вечера. Времени не было, пришлось изобретать велосипед, ведь HP не предоставляет драйверы для этого принтера под Windows 7 и Windows 7 x64. Это одна из причин моего крайне негативного отношение к драйверам HP, в последнее время имел несколько проблем с ними. Переходим к решению.
Автор: Шпак Андрей
Импорт dbx из Outlook Express в Microsoft Outlook 2010
Сегодня полдня восстанавливал почту из бэкапа outlook express одного из сотрудников. Порядка 8000 писем, с вложениями. Бэкап был в виде dbx файлов самого outlook’a. Алгоритм восстановления получился следующим:
- Конвертация архива писем в письма eml. (www.aid4mail.com)
- Импорт из eml через сторонний софт. (outlookfreeware.com)
- А как вы решаете подобную задачу? У меня под рукой уже нет Windows XP, где можно провернуть это всё стандартными методами.
В целом – проблему решил, однако потратил пол дня на ожидания выполнения, всё это очень долго с вычислительной точки зрения, при полном отсутствие загрузки любых систем.
Аудит пользователей и компьютеров в Active Directory
У меня продолжается автоматизация процессов. Частично на это подтолкнуло создание блога, ведь теперь созданные скрипты не потеряются.
У меня на работе существует проблема с отделом кадров. Он далеко не всегда сообщает об увольнении сотрудников. Поэтому я написал скрипт, который формирует отчёт о сотрудниках, не входивших в систему 30\90\180 дней. Скрипт теперь запускается раз в неделю и автоматически присылает мне отчёт на почту. Мне остаётся только нажать пару кнопок клавиатуры и избавить себя от мусора в AD. Можно автоматизировать процесс удаления пользователей после 180 дней, но в моём окружении это не имеет смысла, маленький масштаб предприятия. Если нужна помощь с последним пунктом – пишите, протестирую и опубликую в свободное время.
Кроме работы с пользователями, данный скрипт делает отчёт по компьютерам в AD. В отчёт попадают компьютеры, которые не соединялись с контроллером домена 30/60 дней.
Сам скрипт:
# ============================================================================================== # # Microsoft PowerShell Source File -- Created with SAPIEN Technologies PrimalScript 2011 # # NAME: AD_Users_report.ps1 # # AUTHOR: Shpak Andrey , [email protected] # DATE : 04.07.2012 # # COMMENT: Создаёт отчёт по состоянию различных пользователей и компьютеров в АД и кидает его на почту. # # ============================================================================================== # Включаем поддержку Active Directory в PowerShell Import-Module ActiveDirectory # Задаём временные промежутки, используемые в скриптах. $today = Get-Date -Format "dd-MM-yyyy" $30days = Get-Date (Get-Date).adddays(-30) $60days = Get-Date (Get-Date).adddays(-60) $90days = Get-Date (Get-Date).adddays(-90) $180days = Get-Date (Get-Date).adddays(-180) $Logfile = "$env:windir\logs\AD_Cleanup\$today.txt" # Создаём пустой лог. New-Item $Logfile -type File -Force #Задаём параметры почтового сервера, адрес получателя, адрес отправителя. $EmailFrom = "<e-mail>" $EmailTo = "<e-mail>" $EmailSubject = "Active Directory not logged users report." $smtpServer = "<mail-server>" $smtpUsername = "<smtp username." $smtpPassword = "<smtp password>" #Конвертируем открытый пароль в тот, который скушает PS $secstr = New-Object -TypeName System.Security.SecureString $smtpPassword.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)} $EmailCred = New-Object -typename System.Management.Automation.PSCredential -argumentlist $smtpUsername, $secstr # Отсееваем пользователей с последним логином 30 дней с текущего момента и добавляем в отчёт. Не добавляем заблокированных. Add-Content $Logfile -Value "`nНе входили 30 дней. Поинтересоваться?`n" Get-ADUser -Filter 'lastLogon -lt $30days -and Enabled -eq "True"'| Format-Table Enabled,UserPrincipalName,GivenName,Surname,Name,SamAccountName | Out-File -Append -FilePath $Logfile -Encoding Default # Отсееваем пользователей с последним логином 90 дней с текущего момента и добавляем в отчёт. Не добавляем заблокированных. Add-Content $Logfile -Value "`nНе входили 90 дней! Пора блокировать!`n" Get-ADUser -Filter 'lastLogon -lt $90days -and Enabled -eq "True"'| Format-Table Enabled,UserPrincipalName,GivenName,Surname,Name,SamAccountName | Out-File -Append -FilePath $Logfile -Encoding Default # Отсееваем пользователей с последним логином 180 дней с текущего момента и добавляем в отчёт. Показываем всех. Add-Content $Logfile -Value "`nНе входили 180 дней! Пора удалять!`n" Get-ADUser -Filter 'lastLogon -lt $180days'| Format-Table Enabled,UserPrincipalName,GivenName,Surname,Name,SamAccountName | Out-File -Append -FilePath $Logfile -Encoding Default # Отслеживаем мёртвые компьютеры. Add-Content $Logfile -Value "`n===================================================================================================================`r`n" Add-Content $Logfile -Value "`nОтслеживаем мёртвые компьютеры.`r`n" Add-Content $Logfile -Value "`nКомпьютера нет 30 дней! Пора искать!`n" Get-ADComputer -Filter 'modifyTimeStamp -lt $30days -and Enabled -eq "True"' -Properties CanonicalName,Description,ManagedBy | Format-Table DNSHostname,Name,Enabled,CanonicalName,Description,ManagedBy | Out-File -Append -FilePath $Logfile -Encoding Default Add-Content $Logfile -Value "`nКомпьютера нет 60 дней! Пора удалять!`n" $Computers60 = Get-ADComputer -Filter 'modifyTimeStamp -lt $60days' -Properties CanonicalName,Description,ManagedBy | Format-Table DNSHostname,Name,Enabled,CanonicalName,Description,ManagedBy | Out-File -Append -FilePath $Logfile -Encoding Default # Формируем и отсылаем красивое письмо письмо. $Logs = Get-Content $Logfile [string]$finalreport ="" # Меняем тип объекта на строчку: foreach ($Log in $Logs) { $finalreport = $finalreport + $Log + "`r`n" } Send-MailMessage -Encoding ([System.Text.Encoding]::UTF8) -To $EmailTo -From $EmailFrom -Subject $EmailSubject -Priority High -SmtpServer $smtpServer -Credential $EmailCred -Body $finalreport -Attachments $Logfile
О системных администраторах и рутине
Есть некоторая часть людей, которые считают, что работа системного администратора это сидеть и пить пиво. Другая часть людей полагает, что системный администратор должен быть взмыленным и бегать по всему офису меняя картриджи, мышки, клавиатуры. К этим двум категориям можно добавить ещё много примеров, ведь для многих людей системный администратор профессия очень загадочная.
Бывает так, что сотрудник есть, а вроде ничего не происходит. Сотрудника нет, а вроде опять ничего не происходит. И зачем он тогда?
Автоматическая очистка директорий с использованием PowerShell (полная версия)
В рамках автоматизации процессов написал скрипт, который рекурсивно удаляет файлы из директорий по дате. В нашем окружении скрипт будет использоваться для автоочистки директории с ежедневными резервными копиями баз данных с SQL сервера.