Рубрики
Uncategorized

Создание модуля DSC для установки Oracle Client и отключения включения UAC

Вы когда -нибудь получали задачу и думаете, насколько это трудно? Тогда вы начинаете, что T … Tagged с DevOps, DSC, Howto, Oracle.

Вы когда -нибудь получали задачу и думаете, насколько это трудно? Тогда вы начинаете то, что превращается в, казалось бы, бесконечное путешествие.

Добро пожаловать в смешивание старых и новых технологий.

Я оказался в состоянии, когда мне нужно установить клиент Oracle на виртуальную машину Windows, работающую в Azure, используя желаемую конфигурацию состояния (a.k.a. DSC), и, ну, давайте просто скажем, что это было интересное путешествие.

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

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

Несколько важных предпосылок для использования этого сценария.

  • Вам понадобится модуль DSC, который загружает клиентский пакет Oracle, тот, который я использовал, был для 11GR2 и включает в себя файл ответов для клиента.

    • Эти предметы будут специфичными для вашей ситуации.
  • Ваш локальный диспетчер конфигурации (a.k.a. LCM) должен быть установлен для того, чтобы DSC перезагрузился.

  • Этот скрипт отключит UAC, и если по какой -то странной причине после перезагрузки, сценарий не продолжил запуск UAC, остается в состоянии инвалида …

!! ПРЕДУПРЕЖДЕНИЕ !! UAC не следует оставлять отключенным

Убедитесь, что вы понимаете, что делает этот сценарий и как диагностировать состояние виртуальной машины, как только сценарий запускается.

Script insalloraclewithanswerfile {

TestScript = {

$ oraclepathtest-path hklm: \ software \ wow6432node \ oracle \ key_oraclient11g_home1;

$ regval -itemproperty -path hklm: \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System -name EnableLua;

if (($ oraclepathtest) -и ($ Regval. EnableLua -eq 1)) {

вернуть $ true

}

еще {

вернуть $ false

}

}

SetScript = {

$ continueProcessing = $ true;

$ logtimestamp -date -format yymmddhhmm;

$ logpath;

$ logfile;

Add-Content -path $ logfile -value «-начинаться в общей сложности Oracle Install с ответом-«;

Add -Content -path $ logfile -value » -открытие -получить текущее значение UAC -«;

$ regval -itemproperty -path hklm: \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System -name EnableLua;

Add -Content -path $ logfile -value «UAC Reg Key:»;

Add -Content -path $ logfile -value $ regval;

if ($ regval. EnableLua -eq «1») {

Add-Content -path $ logfile -value «-изменить UAC на отключение (т.е. 0)-«;

Set -itemproperty -path hklm: \ software \ microsoft \ windows \ currentversion \ policies \ system -name EnableLua -value 0;

Add-content -path $ file -value «-установите глобальный флаг, чтобы вызвать перезагрузку-«;

$ global: dscmachinestatus;

$ continueProcessing = $ false;

}

if ($ continueProcessing) {

Add-Content -path $ logfile -value «-начать проверку на Oracle Install-«;

$ oraclereGpath;

Add -Content -path $ logfile -value «Oracle Reg Path:»;

Add -Content -path $ logfile -value $ oraclereGpath;

$ oraclepathtest-path $ oracleregpath;

Add -Content -path $ logfile -value «Результаты испытательного пути»;

Add -Content -path $ logfile -value $ oraclepathtest;

if ($ oraclepathtest -eq $ false) {

$ params;

$ oracleclientexe;

Add-Content -path $ logfile -value «— Запуск Oracle Install —«;

Start -process -filepath $ oracleclientexe -argumentlist $ params -wait -passthru;

Add-Content -path $ logfile -value «— Отделка Oracle Install —«;

}

еще {

Add -Content -path $ logfile -value «Oracle Reg Key был найден, чтобы не работать установки».

}

Add -Content -path $ logfile -value » -вторичный -получить текущее значение UAC -«;

$ regval -itemproperty -path hklm: \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System -name EnableLua;

Add -Content -path $ logfile -value «UAC Reg Key:»;

Add -Content -path $ logfile -value $ regval;

if ($ regval. EnableLua -eq «0») {

Add-Content -path $ logfile -value «-измените UAC на включение (т.е. 1)-«;

SET -ITEMPORPORTY -PATH реестр:: hkey_local_machine \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System -name -name EnableLua -value 1;

}

Add-content -path $ file -value «-установите глобальный флаг, чтобы вызвать перезагрузку-«;

$ global: dscmachinestatus;

}

Add-Content -path $ logfile -value «-Завершите общую oracle install с ответом-«

}

GetScript =}}

Зависит от

}

Тестовый скрипт

Короче говоря, тестовый скрипт подтверждает две вещи.

  1. Установлен ли клиент Oracle на основе ожидаемого ключа реестра присутствует.
  2. Является ли UAC в включенном состоянии, также проверяется путем рассмотрения ожидаемого значения ключа реестра.

Если какое -либо из этих условий является ложным, необходимо запустить сценарий SET.

Установить скрипт

Вот где он получает волосатый интересно.

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

Поскольку мне придется по сути предоставить себе автоматический выключатель, я установил Flug Flag в начале, который я могу использовать позже.

Из -за того, как работает установщик Oracle, даже с файлом ответов, вы все равно получите подсказку UAC, прежде чем вы сможете начать установку, поэтому первая часть этого сценария набора получит значение UAC через реестр.

Как только у меня есть значение UAC, я проверяю, чтобы увидеть состояние значения, в случае, когда оно происходит (т.е. 1) я хочу отключить его Поэтому я изменяю значение реестра, также устанавливаю свой Flag Flag на False и устанавливаю переменную среды, чтобы DSC для перезагрузки после завершения этого скрипта. А именно …;

На этом этапе я проверяю свой флаг, чтобы убедиться, что я пропустил попытку установить клиент Oracle Это связано с тем, что даже думал, что мы обновили реестр, который он вступает в силу, пока мы не перезагрузимся, и, следовательно, не нужно запускать установщик Oracle.

Поэтому мы входим в систему, что мы не можем установить клиент Oracle и продолжать.

Следующий бит также приводит к не применению изменений, поскольку значение UAC в реестре технически все еще 1, поскольку UAC фактически не сохраняется до перезагрузки.

Я неаккуратно в конце и сбрасываю dscmachinestatus. Мех.

Итак, теперь мы перезагружаемся.

Теперь пробегая скрипт во второй раз после перезагрузки, мы останемся в состоянии, где UAC отключен Но у нас не установлено Oracle Client, поэтому, когда мы запускаем сценарий SET, произойдет установка Oracle.

Мы завершаем второй запуск за счет включенного UAC и еще одной перезагрузки.

Когда система появляется в третий раз UAC включен и установлен клиент Oracle.

Пожалуйста, дайте мне знать, если вы столкнетесь с проблемами с этим сценарием в комментариях.

Оригинал: «https://dev.to/briannipper/creating-a-dsc-module-to-install-oracle-client-and-disable-enable-uac-3358»