We rise up for the things we believe in over and over again

Вчера мне кого-то очень сильно хотелось покусать. И это меньшее, что можно было сделать.
Скрипт, который работает с политикой расстановки принтеров, успешно оттестированный в изолированном окружении, был перенесен в боевую среду. Отработал на ура. Даешь пачку принтеров, выбираются нужные политики, в них вносятся нужные параметры, в общем - все прекрасно. Открываем политики в оснастке - все видно, все читается, все на местах.
Но как только клиентская Win 7 пытается такую политику прочитать - все рушится на корню. А в логах контроллеров домена вообще прекрасное: Windows cannot access the file gpt.ini. Якобы нет ни этого файла, ни самого Printers.xml, в котором принтеры лежат. Хотя все проверки показывают, что файлы - вот они, на местах.

Ломали мозг весь вечер. Сломали, отключили пару пораженных политик, от греха подальше.

Под конец моего рабочего дня, когда уже никого не было, мне пришла в голову дикая мысль. Если файл есть, но система говорит, что не может его прочитать, дело может быть в двух вещах - либо это права доступа, либо это ересь в содержимом. Права мы проверили, содержимое тоже, вся структура XML и GPT.ini на месте. Что еще? Содержимое мы можем не опознать, если не понимаем, что там написано, то есть кодировка не та. Открываю в том же Блокноте файл живой политики, даю команду Save as..., и система предлагает дефолтный вариант - ANSI. Открываю файл дохлой политики, даю ту же команду - держи Unicode. Метод xml.save() по-умолчанию сохраняет документ именно в UTF-8, out-file - аналогично.

Дальше идет очень-Очень-ОЧЕНЬ много самых отборных матюков, которые только могут прийти в мою голову. Насквозь юникодная семерка не может читать юникодовые файлы политик, подавай ей ANSI. 2012-ая ровно в таких же условиях отрабатывает на ура.

С утра пересохранили нужные файлы, включили политики (у меня на это прав нет), все отреплицировалось, все заработало. Но повторюсь - очень-Очень-ОЧЕНЬ много нехороших слов.

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

@темы: Этот безумный мир, PowerShell

17:22

Testing

We rise up for the things we believe in over and over again
Пожалуй, оставлю это здесь на долгую память, ибо это so true!


@музыка: Mark Farina - Sexy Fire

@темы: Этот безумный мир

We rise up for the things we believe in over and over again
Любопытные факты обнаруживаются, пока шерстишь страницы Сети.
1. Персонаж Каллиста Карноу. Актер озвучки - Лена Хиди. Чем знаменита на текущий момент - думаю, пояснять не надо.
2. Объявления по местным громкоговорителям - Кэрри Фишер. В представлении также не нуждается.
3. Принцесса Эмили Колдуин - Хлоя Грейс Морец. Черт побери, не узнал Убивашку :)
4. Самое любопытное, но это уже ко второй части. Собственно Корво Аттано, который все же обрел голос в Dishonored 2 - Стивен Рассел. "Обесчещенного" многие называли идейным наследником старого доброго Thief. Теперь для этого есть еще один повод, ибо именно Стивен подарил свой голос Гаррету в первых трех частях Ворюги :)

@настроение: :)

We rise up for the things we believe in over and over again
Один-единственный трек этого коллектива у меня уже достаточно давно лежит, с тех времен больше не приглянулось вообще ничего. Maybe tomorrow is a better day. Кто не знает, вот он:

Один из тех немногих, что вызывают вполне себе оформившуюся геометрическую ассоциацию, хотя и не настолько сильную, нежели Gandalf - Echoes from the Ancient Dreams pt.1. Впрочем, некорректно, Echoes... давно и прочно по многим параметрам вне конкуренции и вне всяких хит-парадов или оценок. Равно как и вне плейлистов.

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

Что тут скажешь, улов небольшой. В сухом остатке 4 композиции, считая уже упомянутую Maybe tomorrow is a better day. Добавились Clear Blue Sky, Overboard, Dying to Live. С другой стороны, они прописались на автоповтор в плеере еще вчера, и так до сих пор там и крутятся. А это говорит уже о многом. Любопытнее всего получилось с Синим Небом. Сначала ее не понял, но осталось смутное ощущение, что она до боли что-то напоминает. А потом в голове всплыла мысль о 99-й трассе, и, вот оно! Трек из того же разряда, что и нежно любимая Joe Satriani - Speed of Light. Не по темпу, не по тексту - "Скорость света" вообще инструменталка, чем и ценна. Скорее, по настроению. "Когда ты едешь по 99-й, хочешь только одного - чтобы она никогда не кончалась". Педаль в пол и вперед!

Одно плохо - грызть под эту музыку The Corroded Man не получается от слова совсем :) Нужно искать что-то другое.

@музыка: Poets of the Fall - Clear Blue Sky

@темы: Music

We rise up for the things we believe in over and over again
По традиции - пачка скринов из завершенной игры. Тем временем, до выхода второй части осталось всего ничего - неделя.
Заглянуть в Дануолл

@музыка: Genesis - Driving the last spike

@темы: Этот веселый мир, In-game

We rise up for the things we believe in over and over again
Пусть лежит расстрельный списочек, чтоб не потерять, если еще когда пригодится:

Малтаил
Урзаил
Адрия
Хвостатый
Холодильник
Мясо
Арана
Животное
Цидея
Хомяк
Леорик
Азмо
Раканот
Белка
Магда
Кулл

Если бить их именно в таком порядке - ДХ соло может уложиться в 20 минут. Порок + Данетта, 460 парагон. Проверено лично.

@музыка: E-Mantra - Veiled Clouds

@темы: In-game

01:07

Вау!

We rise up for the things we believe in over and over again

Хотеть! Срочно хотеть! :)

@музыка: Genesis - Driving the last spike

We rise up for the things we believe in over and over again
До Нового Года остались какие-то жалкие два месяца. И основная проблема в том, что даже этот праздник для меня потихоньку "испаряется". Равно как и все остальные. А всему виной рабочий график. Не, я знал, на что шел, когда устраивался на такую работу. Но от наблюдений это не спасает. Да-да, всяких там 23 февраля, 8 марта, первых-вторых майских, чего там еще, для меня уже третий год, как не существует. Дошла очередь и до НГ, эту новогоднюю ночь выпало дежурить именно мне.
Пока еще не знаю, чем займусь в свободное от работы время. Скорее всего так же, как и всегда, обложусь либо книгами, либо сериалами, либо музыкой. Одно лишь знаю точно, никакого Powershell'а. Пусть хотя бы в одну ночь он отдохнет от меня, а я - от него.

Впрочем, все фигня, мозги сейчас больше занимает другая мысль. Предупреждаю - она странная, очень странная (в ночных сменах большинство мыслей таковы, что уж поделать).
Читать дальше на свой страх и риск, завесив курсор мыши на ссылке "Отписаться"

@музыка: Genesis - Driving the last spike

@настроение: Ночная смена, что ты творишь, прекрати уже...

@темы: Random Thoughts

We rise up for the things we believe in over and over again

Сделано. Решение "влоб" отменяется. MS XML оказался намного проще, чем я полагал все это время.
На вход - csv c полем Name (в нашем случае - ищется файл printers.csv в папке Документов текущего пользователя), где будут перечислены отображаемые имена принтеров. На выходе - заполненные политики по разливке этих принтеров пользователям на основе групп доступа. Принтеры будут расставляться членам групп с именами, равными названиям принтеров.
Политик две. Предполагается, что принтеры на первой площадке попадают в политику Map-Printers-01 и крутятся на принт-сервере ps1, принтеры второй площадки разливаются через политику Map-Printers-02 и сидят на сервере с названием ps2.
Если вдруг скрипт обнаружит, что для какого-то принтера не создана группа доступа, скажет об этом и пропустит принтер.
Если будет обнаружено, что в целевой политике уже есть запись для добавляемого принтера - будет предложено ее (или их, если их много - бывает и так) пересоздать. Если отказаться от этого - принтер будет пропущен.
И важный момент. Обе политики уже должны существовать, и в них должен быть заведен хотя бы один принтер. В противном случае в каталоге политики в SYSVOL будет отсутствовать файл Printers.xml, а создавать его политика не обучена (мне было лень).
Поехали!


@музыка: Joe Satriani - Speed of Light

@настроение: Getting the things done!

@темы: PowerShell, Scripting

We rise up for the things we believe in over and over again

Повод для этой записи для меня необычен. На дайриках полно заметок, где народ всякие гифки выкладывает с полюбившимися им киноперсонажами. Вот эта напасть и меня не миновала. Знакомьтесь: Мейзикин (Мейз) из Люцифера.

Вот казалось бы, чего такого - простой поворот и наклон головы. Но именно на этот жест я залип. Да крепко так. Настолько, что пришлось все же освоить науку создания этих ваших гифочек. VirtualDub не подкачал, но пока-а-а-а я смог скормить ему все 63 кадра разом, а до этого еще и руками нарезать эти кадры, потому что формат MKV мало кто способен понять и сделать раскадровку.
С кормежкой VirtualDub вообще азаза получилось. До этого я вовсе ни разу с программкой не работал (как-то не было нужды), потому о том, каким образом ему подсовывать цепочку картинок, не имел ни малейшего понятия. А в окне выбора файлов можно выбрать только один. И как же быть? Да вот так и быть - файлы должны иметь номер в конце. Ну то есть:
File1.jpg
File2.jpg
File3.jpg
...
Ок, не вопрос:

Но и после этого VirtualDub не захотел кушать всю цепочку. Что ж не так? А вот что. MPC HC, которым я резал кадры, сохраняет их с вымученным названием, например,
Lucifer.S02E05.1080p.rus.LostFilm.TV.mkv_snapshot_11.19_[2016.10.30_23.16.35].jpg
В общем и целом, благодаря квадратным скобкам и тому, что между ними, VDub не расценивал эти файлы как часть цепочки. Кстати, сами квадратные скобки еще в Powershell попортили немного крови, пришлось воспользоваться ключом -literalpath при переименовании, иначе PSH эти файлы в упор не видел.
Ладно, тот же скрипт, но вместо $file.basename ставим "LuciferS2-E5-" - и все стало просто замечательно.

@музыка: E-Mantra - Kaleidoscope Clouds

@настроение: А все же залип... Впрочем, Мейз и без этого хороша, особенно в действии :)

@темы: Этот безумный мир, PowerShell, Scripting, Этот веселый мир

We rise up for the things we believe in over and over again
Knife of Dunwall - Whisper Ways (Undetected), Cleaner Hands (No Kill)
The Brigmore Witches - Silence is Golden (Undetected), Cleanest Hands (No Kill)

Done @ 30.10.216

Arkane Studios - давайте уже вторую часть! :)

@темы: In-game

15:03

Life

We rise up for the things we believe in over and over again
Очередной виток под названием "Жить на работе"? Причем, жить - во всех смыслах? Ну что ж, пусть так.
Ok, then. Let's dance! (c) Raiden

@музыка: клац-клац-клац

22:20

TV Series

We rise up for the things we believe in over and over again
Попалась на Лосте очередная трава - Радиоволна (Frequency). Посмотрев пилотную серию, без лишних раздумий добавил себе сериал в RSS-downloader. Тут-то меня и прикрыло от вида всего того, что там уже живет:

Накопилось же за пару-тройку лет. А начиналось все со старых-добрых Powershell-скриптов, пока еще fs.to был жив, да сладкой парочки "Стрела+Флэш"...
Народ, а кто чем из вас нынче закидывается? :)

@музыка: Nadia Ali - Rapture

We rise up for the things we believe in over and over again
– Фрисайд – всего лишь большая труба, сквозь которую текут вещи и люди, – сказала Молли. – Туристы, мошенники, кто угодно. Здесь они попадают на этакое сито, которое тщательнейшим образом отделяет их от денег, деньги остаются здесь, а людей скидывают назад, на дно гравитационного колодца.

Дошли наконец-то руки до Нейроманта. Уж лучше поздно, чем никогда.

We rise up for the things we believe in over and over again

Бессонные ночи того стоили. Однозначно (с)
Хотя нет. Бессонные ночи - это автоматизация настройки принтеров на DHCP и принт-серверах, и это только часть общего дела. Есть и другая часть, не менее муторная, если не более - учет этих самых принтеров. И ведется он, как бы так помягче сказать - из рук вон плохо. Поскольку в Excel-файлы, хранящие в себе сведения по разным офисам данные о добавленных или убранных принтерах вносит куча народа, неизбежны ошибки. А кто-то вообще забудет это сделать. Чего уж там, скорее всего и я в этих файликах тоже косячил.

И в итоге вся отчетность плывет.

Отныне это должно измениться, потому что вся отчетность будет создаваться автоматом на основе реальных данных DHCP и PS: сценарий сформирует сводный csv-файл с кучей информации по резервированным адресам на DHCP серверах и принт-серверах, а сделанная и сохраненная excel-таблица (роль которой - сугубо удобное представление данных) будет кормиться как раз из полученного csv.

Но прежде, чем переходить к самому скрипту, хотелось бы положить в запись ссылку на следующую страницу:

Join-Object - Technet

Скрипт Join-Object фактически реализует такие интереснейшие вещи из мира баз данных, как Join'ы. Именно FULL JOIN позволит нам связать сведения от DHCP-серверов и серверов печати. Прекраснейший скрипт, за который огромное спасибо ребятам из команды MS Powershell. Ну а подключить его к основному сценарию достаточно просто - через dot-source - прямо в первой строке нашего сценария. Что ж, поехали:

Окинув взглядом получившуюся в Excel мега-таблицу увидел в ней сто-о-о-о-о-олько интересного! :)

@музыка: Mark Farina - Sexy Fire (Factory Boom Boom Mix)

@настроение: Overall progress - 50% - nice!

@темы: PowerShell, Scripting

We rise up for the things we believe in over and over again
It's done. Full stealth, pacifist, low chaos как следствие pacifist-забега.

Пока не знаю, буду ли пробовать Mostly flesh and steel, он же Factory-zero run (прохождение без скиллов за исключением базового blink - его по-любому дают). Скорее всего буду, но позже. Надо чуть передохнуть.
Ну и да, теперь можно спокойно ждать выхода второй части :)

@музыка: Sandra - Everlasting love

@настроение: Хо-ро-шо!

@темы: In-game

We rise up for the things we believe in over and over again

Однако, здравствуйте. Оказалось, что оператор Continue, который должен переходить к следующей итерации цикла, внутри которого он вызван, не работает в некоторых случаях. Вот пример:

Суть кода - в switch проверяется значение переменной $i. Если оно равно 8, пишется предупреждение, вызывается оператор Continue, и скрипт переходит к итерации под номером 9. Во всех остальных случаях switch не делает ничего, и сценарий выполняет следующую за switch инструкцию "напиши мне значение переменной $i. А вот что мы получаем на самом деле:

С другой стороны, исправь мы код совсем чуть-чуть, получим ровно то, что требовалось:

Получается, что continue тоже считает switch за цикл? Это засада.

@музыка: Sandra - Hi! Hi! Hi!

@темы: PowerShell, Scripting

We rise up for the things we believe in over and over again
It's over.


@темы: Этот безумный мир

We rise up for the things we believe in over and over again
Вот оно! Отныне и навсегда, любой, кто спросит меня, "почему ты не употребляешь", вместо объяснений будет получать ссылку на это видео!


@настроение: !!!

@темы: Этот веселый мир

We rise up for the things we believe in over and over again
Нет, нисколько не пожалел о покупке. Отличная игра, пусть еще и не пройдена до конца. Да пофиг и на тот факт, что мне придется заново начать, ибо главная цель - достижение Clean Hands (вообще без убийств) уже завалено. Какие там вещи народ вытворяет!

Как говорится, кролики - это не только ценный мех, а приключения Корво - это не только про стеллс :) Абсолютно не мой стиль прохождения, но как же оно все красиво выполнено! Особенно последнее устранение противника, просто восторг! :)

@музыка: Sandra - H! Hi! Hi!

@настроение: Но клешни мне под эту игру еще выпрямлять и выпрямлять...

@темы: In-game