Рубрика: IT
[PowerShell] Обновление данных учетных записей в ActiveDirectory
Есть XML файл с актуальными данными сотрудников, из которого нужно обновить некоторые данные у учетных записей в ActiveDirectory (далее – AD). Уникальным индификатором является GUID (Как получить GUID и objectGUID из ActiveDirectory), которые уже выгружены из AD. Как прочитать данные из XML файла с помощью PowerShell я уже писал, поэтому здесь опишу часть скрипта, которая непосредственно вносит изменения в AD. Для работы с AD использую командлеты Quest Powershell.
XML файл имеет следующую структуру:
Последовательно считываем все учетки, берем GUID и остальные данные. В AD изменения вносятся следющей командой:
Set-QADUser $xmluser.GUID -Title $xmluser.title -Description $xmluser.title -Department $xmluser.department.Trim() -Notes $xmluser.info | Out-Null
Казалось бы вопрос решен, но в AD не есть не только пользователи, но и контакты. А командлет Set-QADUser работает только с учетными записями. Если необходимо взаимодействовать с учетными записями и контактами, как в моем случае, то используем командлет Set-QADObject:
Set-QADObject $xmluser.GUID -ObjectAttributes @{title=$xmluser.title;description=$xmluser.title;department=$xmluser.department.Trim();info=$xmluser.info} | Out-Null
Trim () – удаляет пробелы в строке.
Полное описание командлетов Set-QADObject и Get-QADObject с примерами.
Можно также отключать и включать учетные записи в AD с помощью командлета Set-QADObject:
Set-QADObject $xmluser.GUID -ObjectAttributes @{userAccountControl='512'} | Out-Null
512 – вкл, 514 – выкл.
[PowerShell] Данные из XML файла
Есть XML файл с данными сотрудников компании следующей структуры:
Необходимо из некого выгружать данные с помощью PowerShell. Скрипт достаточно простой получился:
# Пробелы в квадратных скобках нужно убрать [ xml ]$xmlfile = Get-Content "D:\xml\test.xml" foreach($xmluser in $xmlfile.domainusers.user) { Write-Host $xmluser.ФИО Write-Host $xmluser.Телефон }
В примере скрипт выводит данные из двух тэгов – ФИО и телефон.
VPN клиент на TP-Link TL-MR3020 с прошивкой OpenWRT
Я уже писал про OpenWRT на TP-Link TL-MR3020:
1. Установка OpenWrt на роутер TP-Link TL-MR3020,
2. Как подключить флешку к TP-Link TL-MR3020,
3. 3G модем на роутере TP-Link TL-MR3020,
теперь опишу процесс настройки VPN клиента на роутере TP-Link TL-MR3020 для подключения к PPTP серверу.
Импорт данных из XML файла в список SharePoint с помощью PowerShell
Появилась задача загрузить данные из файла XML в список SharePoint 2010. XML имеет следующую структуру:
В SharePoint 2010 заранее создал список — Список пользователей, с соответствующими полями. Вот скрипт на PowerShell, который возьмет данные из файла XML и загурузит в список SharePoint:
if(!(Get-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction:SilentlyContinue)) { Add-PSSnapin Microsoft.SharePoint.Powershell #Set these two variables accordingly $WebURL = “http://portal.contoso.com/” $ListName = "Список пользователей" $XMLFilePath = "C:\scripts\xml\test.xml" #Get the Web $web = Get-SPWeb $WebURL #Get the List $ProjectList = $web.Lists[$ListName] #import xml file [*xml]$ProjectXmlFile = Get-Content $XMLFilePath foreach ($XMLProject in $ProjectXmlFile.domainusers.user) { $NewProject = $ProjectList.Items.Add() $NewProject["ФИО"] = $XMLProject.ФИО $NewProject["Отдел"] = $XMLProject.Отдел $NewProject["Должность"] = $XMLProject.Должность $NewProject["Комната"] = $XMLProject.Комната $NewProject["Рабочий телефон"] = $XMLProject.Телефон $NewProject["Адрес электронной почты"] = $XMLProject.Почта $NewProject.Update() Write-Host "Project $($XMLProject.ФИО) has been Added to External Projects list!" }
* в коде есть место — [*xml], так звездочку нужно удалить.
Это скрипт подойдет только для разовой загрузки данных, т.к. скрипт не заменяет данные в списке SharePoint, а еще раз их туда запишет, если его повторно запустить. Т.е. в списке будет две Ивановой, и две Соколовой.
Как узнать версию SharePoint
Все время забываю, где можно посмотреть версию SharePoint. Так что это напоминалка для себя.
1. Версию SharePoint можно посмотреть в Центре администрирования –> Параметры системы –> Управление серверами в этой ферме.
2. С помощью PowerShell:
Get-SPFarm | Select BuildVersion
Командлет доступен только через Командную консоль SharePoint 2010, если через обычную консоль PowerShell, то необходимо добавить оснастку Microsoft.SharePoint.Powershell.
if(!(Get-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction:SilentlyContinue)) { Add-PSSnapin Microsoft.SharePoint.Powershell } get-spfarm | select BuildVersion
3. Еще один вариант:
([Microsoft.SharePoint.Administration.SPFarm]::Local).buildversion
Как сохранить драйвера перед переустановкой Windows
Попал ко мне в руки старых лаптоп (ноутбук) Sony VAIO PCG-5J3P с красной крышкой. Внутри Intel Core 2 Duo 2.0GHz, 1 GB RAM, HDD 200 GB. Он года выпуска вроде 2007. Лицензионная наклейка на нем Windows Vista, но по файкту стоит WIndows XP. Работает вполне бодро. Его планируется задействовать для одной простой задачи, с которой он справится на отлично. Но до этого его нужно подготовить, а точнее почистить от пыли и переустановить Windows. Перед форматированием жесткого диска задался вопросом, а как же у него с драйверами? К моему удивлению, на сайте SONY не было упоминания об этой модели ноутбука вообще! Даже гугл выдавал несколько ссылкок на форумы, где люди ищут для него драйвера. Первый раз с таким сталкиваюсь, вродне, лаптоп не похож на подделку китайскую, сделан хорошо. Может компании Сони стало стыдно за эту можель, они решили о ней забыть и удалили со своего сайта все упоминания о ней? Похоже на бред, конечно.
[PowerShell] Как получить GUID и objectGUID из ActiveDirectory
При выгрузке свойства objectGUID учетных записей пользователей из ActiveDirectory при помощи Quest Powershell выяснилась одна особенность. objectGUID в результате выгрузки отличается от оригинала в AD, т.е. его потом нельзя использовать для поиска учеток в AD без преобразования.
Тут все дело в представлении. Для примера:
Get-QADUser USER | fl objectguid,guid
В результате получим два разных варианта:
objectGUID : 3F8C2B60E1E26C44B6D20FF8F6C3028F
Guid : 602b8c3f-e2e1-446c-b6d2-0ff8f6c3028f
Guid совпадает с оригиналом из AD, а objectGUID его преобразованная версия в формат HexString. Чтобы не забивать себе голову обратным преобразованием, просто используем свойство Guid.
Для наглядного примера можно использовать эти команды:
$guid = (Get-QADUser USER).guid Get-QADUser $guid
В результате должны отобразиться данные USER.
Полезные ссылки по этой теме:
3G модем на роутере TP-Link TL-MR3020
Для моего проекта необходим доступ в интеренет, проводного доступа в тем краях нет, поэтому буду использовать 3G модем с сим-картой Мегафон. Итак, дано: роутер TP-Link TL-MR3020 с прошивкой OpenWrt, прошивка роутера загружается с флешки, которая подключена через USB-хаб с отдельным питанием, 3G модем HUAWEI E156G разлоченный и переведенный в режим только модем. Для настройки понадобится подключение к интернету. Поехали, подключаемся к роутеру по SSH…
Как подключить флешку к TP-Link TL-MR3020
После перепрошивки TL-MR3020 на OpenWrt сталкиваешься с первой проблемой – нехватка памяти. У MR3020 всего 4МБ памяти, а нам доступно меньше мегабайта. Есть решение – подключить флешку и перенести все файлы на нее, чтобы роутер загружался с флешки. Это позволит ставить дополнительные пакеты и хранить много разнообразных данных.
Я взял флешку объемом 2ГБ, для роутера ее хватит с запасом. У MR3020 всего один порт USB, я планирую подключить несколько устройств USB, поэтому буду использовать USB-хаб на 8 портов с отдельным блоком питания, а роутер запитаю прямо через этот хаб.
Переносить файлы на флешку надо сразу после перепрощивки роутера на OpenWrt, т.к. места хватит только на установку необходимых пакетов для подключения флешки. Для установки пакетов понадобится выход в интернет. Приступим…
Установка OpenWrt на роутер TP-Link TL-MR3020
Маленький роутер TL-MR3020 от TP-Link идеальное устройство. Соотношение цена/качество на 5+. Когда меня просят посоветовать роутер для для дома, то я не задумываясь советую MR3020. У меня сейчас уже второй такой лежит и подумываю прикупить еще несколько.
На удивление стандартная прошивка у него практически не глючная, с лагами я не сталкивался. Так что для обычного пользователя после покупки стоит просто обновить стандартную прошивку до последней версии, настроить и забыть про него. Но если хочется от роутера большего, то стоит перепрошить его на OpenWrt и получить маленький компьютер.
Когда дело доходит до перепрошивки, то я сразу вспоминаю времена ASUS WL-500gP v.1, где процесс перепрошивки сопровождался танцами с бубном. Я тогда потратил не один вечер, чтобы получить роутер с прошивкой от Олега. И как радовался, когда все получилось.
Времена меняются, и теперь процесс перепрошивки занимает всего несколько минут.
Итак, приступим. У меня в наличии роутер TP-Link TL-MR3020 v.1. На сайте OpenWrt нашел ссылку на прошивку для MR-3020. Актуальная версия на данный момент Attitude Adjustment 12.09, прямая ссылка на файл прошивки – openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin. На этот этапе главное скачать нужную версию прошивки, существует sguashfs-factory и sguashfs-sysupgade. Первая для роутеров, которые еще с заводской прошивкой, а вторая для роутеров уже перепрошитых в OpenWrt.
Скачал файл прошивки, в веб-интерфейсе перешел в раздел Системные инструменты, выбрал скаченный файл и нажал кнопку Обновить.
На перепрошивку ушло пару минут. Автоматически в новую админку мы не попадем, потому что у роутера сменился ip адрес с 192.168.0.254 на 192.168.1.1. Поменял ip адрес компа на 192.168.1.2 и для поверки запустил ping 192.168.1.1 – отвечает. Теперь в браузере вбиваю новый адрес и появляется новая веб-морда прошивки OpenWrt.
Первым же делом нужно задать пароль для root'а. В веб-интерфейсе в верхнем левом углу есть предупреждение и ссылка на страницу смены пароля рута.