Установка HP Laserjet 1012 в Windows 7 x64

HP Laserjet 1012Вчера вечером, срочно потребовалось установить драйверы для принтера HP Laserjet 1012 на свежую операционную систему, установленную днём раньше. Ребята забыли, а позвонили мне, как единственному рядом с компьютером в 7 часов вечера. Времени не было, пришлось изобретать велосипед, ведь HP не предоставляет драйверы для этого принтера под Windows 7 и Windows 7 x64. Это одна из причин моего крайне негативного отношение к драйверам HP, в последнее время имел несколько проблем с ними. Переходим к решению.

Continue reading


Импорт dbx из Outlook Express в Microsoft Outlook 2010

Сегодня полдня восстанавливал почту из бэкапа outlook express одного из сотрудников. Порядка 8000 писем, с вложениями. Бэкап был в виде dbx файлов самого outlook’a. Алгоритм восстановления получился следующим:

  1. Конвертация архива писем в письма eml. (www.aid4mail.com)
  2. Импорт из eml через сторонний софт. (outlookfreeware.com)
  3. А как вы решаете подобную задачу? У меня под рукой уже нет 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

О системных администраторах и рутине

Сохраняйте спокойствие, любите системного администратора Есть некоторая часть людей, которые считают, что работа системного администратора это сидеть и пить пиво. Другая часть людей полагает, что системный администратор должен быть взмыленным и бегать по всему офису меняя картриджи, мышки, клавиатуры. К этим двум категориям можно добавить ещё много примеров, ведь для многих людей системный администратор профессия очень загадочная.

Бывает так, что сотрудник есть, а вроде ничего не происходит. Сотрудника нет, а вроде опять ничего не происходит. И зачем он тогда?

Continue reading


Автоматическая очистка директорий с использованием PowerShell (полная версия)

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

Continue reading