Можете ли вы использовать сценарий powershell для создания сценария powershell?

#powershell

#powershell

Вопрос:

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

В настоящее время я вручную размещаю универсальный скрипт на каждом сервере перед клонированием, а затем запускаю скрипт на сервере-клоне.

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

У меня есть как сценарий powershell, который получает информацию о сервере, так и общий сценарий, который вносит изменения в клон, но я не нашел способа объединить два или какую-либо документацию, поэтому я не знаю, нахожу ли я ограничение с этим.

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

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

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

Надеюсь, эта дополнительная информация поможет.

Спасибо.

Ответ №1:

Перестаньте думать об этом как о коде.

Используйте сценарий 1 для экспорта блоков текста в новый файл. например, у вас может быть конфигурация, в которой указано, что на всех серверах Dell должна выполняться эта строка кода:

 Set-DELL -attribute1 unmanaged
  

где на HP сценарий был бы

 Set-HP -attribute1 unmanaged
  

на веб-серверах вы хотите:

 set-web -active yes
  

где, если не на веб-сервере, вам ничего не нужно.. итак, код вашего родительского сценария будет выглядеть следующим образом:

 $Dell = "Set-DELL -attribute1 unmanaged"
$HP = "Set-HP -attribute1 unmanaged"
$web = "set-web -active yes"

if (Get-servermake -eq "Dell")
{
    $dell | out-file Child.ps1 -append
}

if (Get-servermake -eq "HP")
{
    $HP | out-file Child.ps1 -append
}

if (Get-webserver -eq $true)
{
    $web | out-file Child.ps1 -append
}
  

Результатом является настроенный сценарий для конкретного сервера, дочернего.ps1.

Теперь вы можете взять это и запустить с ним. Вы могли бы сказать, добавить функциональность к дочернему сценарию, например «Это контроллер AD» и т.д.

Однако, возможно, было бы лучше иметь все это в одном сценарии и просто заблокировать разделы, которые не применяются, например, в инструкции if.

Я все еще не совсем уверен, что понимаю, о чем вы спрашиваете. Если я что-то пропустил, скажите мне как, и я расскажу вам, как это лучше настроить. (И, надеюсь, очевидно, что Get-whatever является примером кода. Я не ожидаю, что это будет то, что вы используете для определения марки компьютера / модели / etc)