Mikhail Penkov’s Blog

Administration NON-FAQ

Копирование бинарников через буфер обмена.

Опубликовал drnight на Август 21, 2009

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

И правда. Возьмём обычный запускаемый файл/архив базы 1с/вордовский документ с ценными данными , и откроем блокнотом. В нём присутствуют нечитабельные спецсимволы, которые не скопируются при переносе.

Что же делать? Ответ прост: нужно каким-то образом сконвертировать этот файл так, что бы были только читабельные символы. Такое преобразование существует. Его каждый раз делает почтовая программа, когда вы добавляете какой-нибудь файл аттачментом к письму.  Данное преобразование называется Base64. Ниже приведу пример двух преобразований встренными средствами Windows:

Использование Outlook Express.

При установке Windows 2003 автоматически ставится Outlook Express. И, обычно, не удаляется. Этим можно воспользоваться.

Первым делом идём в C:\Program Files\ видим там папочку Outlook Express и радуемся.
Запускаем msimn.exe. При первом запуске появится окошко мастера. Она нам не нужно, отменяем.
Что бы запускаемый файл можно было перенести через письмо, его нужно переименовать или заархивировать.
Письмо с аттачментом

Полученное письмо надо сохранить средствами оутлука в формате eml. После сохранения его надо открыть блокнотом. Внутри мы видим текст без спецсимволов, который прекрасно переносится через буфер обмена :)
Сконвертированный файл.

Нв втором компьютере повторяется аналогичная операция, только наоборот. Единственная загвоздка – нужно хоть один раз запустить Outlook Express, что бы проассоциировать файлы с расширением EML с ним.

Волшебный скрипт.

Второй вариант – использовать VBScript.  Большое количество примеров таких скриптов есть здесь – http://forum.script-coding.info/viewtopic.php?id=2848 . Большинство примеров используют сторонние библиотеки, но, есть и те, которые использвуют стандартные. На основе одного из таких примеров и был мною написаны пара простых скриптов:

bin2txt.vbs:

Option Explicit
Dim objStream, readBytes, objXML, objDocElem
DIM ArgObj, objFSO , objFile, strSourceFileName, strTargetFileName
Set ArgObj = WScript.Arguments
strSourceFileName = ArgObj(0)
strTargetFileName  = ArgObj(1)
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 1 ' TypeBinary
objStream.Open()
objStream.LoadFromFile(strSourceFileName)
readBytes = objStream.Read()
Set objXML = CreateObject("MSXml2.DOMDocument")
objXML.loadXML "<Base64Data />"
Set objDocElem = objXML.documentElement
objDocElem.dataType = "bin.base64"
objDocElem.nodeTypedValue = readBytes
Set objFSO  = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(strTargetFileName, True)
objFile.WriteLine(objDocElem.text)
objFile.Close

txt2bin.vbs:

 
Option Explicit
Dim objStream, writeBytes, objXML, objDocElem, textBase64
DIM ArgObj, objFSO , objFile, strSourceFileName, strTargetFileName
Set ArgObj = WScript.Arguments
strSourceFileName = ArgObj(0)
strTargetFileName  = ArgObj(1)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strSourceFileName, 1)
textBase64 = objFile.ReadAll
Set objXML = CreateObject("MSXml2.DOMDocument")
Set objDocElem = objXML.createElement("tmp")
objDocElem.DataType = "bin.base64"
objDocElem.text = textBase64
writeBytes = objDocElem.NodeTypedValue
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 1 ' TypeBinary
objStream.Open()
objStream.Write writeBytes
objStream.SaveToFile strTargetFileName , 2

Запускаются скрипты так:

cscript bin2txt.vbs <путь до исходного файла> <путь до выходного файла>
cscript txt2bin.vbs <путь до исходного файла> <путь до выходного файла>

bin2txt.vbs преобразует исходный файл в формат без спецсимволов, а txt2bin.vbs преобразует обратно.

Наверняка, способов существует больше. Если у Вас есть идеи или соображения на эту тему – прошу писать в комментарии.

Рубрика: IT | Оставьте комментарий »

Удаление драйверов.

Опубликовал drnight на Ноябрь 14, 2008

Недавно столкнулся с проблемой удаления драйвера принтера с терминального сервера на базе Windows 2008. Система считала, что драйвер используется даже когда пользователь, который его использовал, завершил сеанс.

Оказалось, что существует полезная команда:

pnputil.exe -e

Эту команду необходимо выполнять в административной командной строке, она показывает список всех 3-сторонних драйверов. После нахождения нужного драйвера его можно форсированно удалить такой командой:

pnputil  -f -d oem8.inf

Если первая команда не выдала полной информации по драйверу, детали можно посмотреть в самих inf-файлах. Они находятся в %WINDIR%\inf и открываются блокнотом.

Рубрика: IT | Оставьте комментарий »

Новая версия ActiveRoles Management Shell for Active Directory

Опубликовал drnight на Сентябрь 9, 2008

Компания Quest зарелизила новую версию расширения Powershell.
Скачать можно по всё той же ссылке http://www.quest.com/activeroles-server/arms.aspx

В новой версии с индексом 1.1.2 разработчики , как и обещали, пофиксили баг с неработающим параментром «-applytotype» в команде Add-QADPermission.

Рубрика: IT | Оставьте комментарий »

Делегирование административных полномочий. V 2.0 Alpha

Опубликовал drnight на Сентябрь 5, 2008

Следующим шагом в создании красивого и удобного скрипта был отказ от команды Exchange’а «Add-ADPermission» в пользу расширения PowerShell от компании Quest.
Взять дистрибутив расширения можно по адресу http://www.quest.com/powershell/activeroles-server.aspx

Команда Add-ADPermission  имеет в этом расширении аналог Add-QADPermission . Разница не очень большая, фактически, только в синтаксисе, но есть и плюсы:

Основной плюс, это возможность задания с помощью команды connect-QADService учетных данных для доступа к AD.
HINT: Пароль можно считывать с помощью строки «$pw = read-host «Enter password» -AsSecureString»

Однако, есть и минус. Версия от 30 июня 2008г. , в данный момент выложенная на сайте, обладает одним существенным багом: команда Add-QADPermission не обрабатывает параметр -applytotype .
В результате приходится заставлять запускающего скрипт ручками менять соответствующее поле, пока не выйдёт обновлённая версия.

Рубрика: IT | Помечено: , | 1 комментарий »

Делегирование административных полномочий.

Опубликовал drnight на Сентябрь 5, 2008

После миграции с Exchange 2003 на Exchange 2007 пришлось заново пересоздавать всё делегирование.

Как известно, в Exchange 2007 делегировать административные полномочия по управлению почтовыми ящиками можно только с помощью PowerShell, делегирование, наследованное из Exchange 2003 не поддерживается. Это был мой первый опыт в данной области.

Помогла статья:

И справочные статьи:

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

В результате, появился такой скрипт:

$RAG_users = «DOMAIN\RAG Users Management Test»
$OU = «OU=Test,DC=domain,DC=ent»

$OU_Staff = «OU=Staff,» + $OU
$OU_Distribution_Groups = «OU=Distribution Groups,» + $OU
$OU_Workstations = «OU=Workstations,» + $OU
$path_recipient_policies = «CN=Recipient Policies,CN=Domain,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=domain,DC=ent»
$path_address_list = «CN=Address Lists Container,CN=Domain,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=domain,DC=ent»
$path_exchange_admin_group = «CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=Domain,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=Domain,DC=ent»

# from http://technet.microsoft.com/ru-ru/library/bb430782(EXCHG.80).aspx
# <<<<< Управление пользователями >>>>>>
# Разрешение на создание пользователей в подразделении

# Разрешение на управление объектами пользователей в подразделении
Add-ADPermission $OU_Staff -User $RAG_users -AccessRights CreateChild -ChildObjectTypes User -InheritanceType All
Add-ADPermission $OU_Staff -User $RAG_users -AccessRights GenericRead, Self -InheritedObjectType User -InheritanceType All

# Наборы свойств ‘Personal Information’, ‘Exchange-Personal-Information’:  http://technet.microsoft.com/ru-ru/library/bb310768(EXCHG.80).aspx
 # Соответствия свойств: http://technet.microsoft.com/ru-ru/library/bb430782(EXCHG.80).aspx
Add-ADPermission $OU_Staff -User $RAG_users -AccessRights ReadProperty, WriteProperty -InheritanceType Descendents -Properties ‘Personal Information’ -InheritedObjectType User
Add-ADPermission $OU_Staff -User $RAG_users -AccessRights WriteProperty -InheritanceType Descendents -Properties Exchange-Personal-Information -InheritedObjectType User
Add-ADPermission $OU_Staff -User $RAG_users -AccessRights ReadProperty, WriteProperty -InheritanceType Descendents -Properties adminDisplayName, autoReplyMessage, cn, co, company, countryCode, department, description, directReports, displayName, displayNamePrintable, dLMemDefault, garbageCollPeriod, givenName, homeMDB, homeMTA, initials, legacyExchangeDN,  mail, mailNickname, manager, mAPIRecipient, mDBUseDefaults,msDS-PhoneticDisplayName, msExchADCGlobalNames, msExchControllingZone, msExchFBURL, msExchHideFromAddressLists, msExchHomeServerName, msExchMailboxGuid, msExchMailboxSecurityDescriptor, msExchPoliciesExcluded, msExchPoliciesIncluded, msExchResourceGUID, proxyAddresses , Pwd-Last-Set, sn, showInAddressBook, targetAddress, textEncodedORAddress, title, User-Account-Restrictions, Web-Information, WWW-Home-Page -InheritedObjectType User

# Необходимые права для подключения создания SIP
Add-ADPermission $OU_Staff -User $RAG_users -AccessRights ReadProperty, WriteProperty -InheritanceType Descendents -Properties RTCPropertySet,RTCUserSearchPropertySet -InheritedObjectType User
# Необходимые права для создания почтового яшика
Add-ADPermission $OU_Staff -User $RAG_users -AccessRights WriteProperty -InheritanceType Descendents -Properties authOrig, dLMemSubmitPerms, dLMemRejectPerms, msExchRecipientTypeDetails, msExchRecipientDisplayType, msExchResourceMetaData, msExchResourceSearchProperties, msExchVersion, msExchUserAccountControl, protocolSettings, securityProtocol, unauthOrig -InheritedObjectType User

# Разрешение сброса пароля

Add-ADPermission $OU_Staff -User $RAG_users -AccessRights ExtendedRight -InheritanceType Descendents -ExtendedRights User-Force-Change-Password -InheritedObjectType User

#                     <<<<< Управление контактами >>>>>>
# Разрешение на управление объектами контакты в подразделении
Add-ADPermission $OU_Staff -User $RAG_users -AccessRights GenericAll -ChildObjectTypes Contact -InheritanceType All

#                     <<<<< Управление OU >>>>>>
# Разрешение на управление объектами OU в подразделении
Add-ADPermission $OU_Staff -User $RAG_users -AccessRights GenericAll -ChildObjectTypes Organizational-Unit -InheritanceType All

#                     <<<<< Управление группами >>>>>>
# Разрешение на управление объектами Групп в подразделении
Add-ADPermission $OU_Staff -User $RAG_users -AccessRights GenericAll -ChildObjectTypes Group -InheritanceType All
Add-ADPermission $OU_Distribution_Groups -User $RAG_users -AccessRights GenericAll -ChildObjectTypes Group -InheritanceType All

# Разрешение на управление динамическими группами рассылки в подразделении
Add-ADPermission $OU_Distribution_Groups -User $RAG_users -AccessRights GenericAll -ChildObjectTypes msExchDynamicDistributionList -InheritanceType All

#                     <<<<< Управление компьютерами >>>>>>
# Разрешение на управление объектами компьютеров в подразделении

Add-ADPermission $OU_Workstations -User $RAG_users -AccessRights GenericAll -ChildObjectTypes Computer -InheritanceType All

#                     <<<<< Дополнительные права для Exchange>>>>>>

# Добавление роли Exchange ViewOnly Admin
Add-ExchangeAdministrator -Identity $RAG_users -Role ViewOnlyAdmin

# Расширенное право доступа к службе обновления получателей
Add-ADPermission -Identity $path_exchange_admin_group -User $RAG_users -InheritedObjectType ms-Exch-Exchange-Server -ExtendedRights ms-Exch-Recipient-Update-Access -InheritanceType Descendents

# Возможность обновлять списки адресов и политики адресов электронной почты
Add-ADPermission -Identity $path_address_list -User $RAG_users -AccessRights WriteProperty -Properties msExchLastAppliedRecipientFilter, msExchRecipientFilterFlags
Add-ADPermission -Identity $path_recipient_policies -User $RAG_users -AccessRights WriteProperty -Properties msExchLastAppliedRecipientFilter, msExchRecipientFilterFlags

Рубрика: IT | Помечено: , | Оставьте комментарий »

Начало.

Опубликовал drnight на Сентябрь 5, 2008

Итак. Это мой первый опыт в создании блога.
Буду выкладывать сюда интересные новости и собственные изыскания.
Примерные темы и направления: OCS , UC, Win2k8, Powershell…
Новые технологии и новые трюки
От винта!

Рубрика: IT | Оставьте комментарий »