Назад | Перейти на главную страницу

Как я могу запустить сценарий PowerShell с повышенными привилегиями как часть спецификации настройки VMWare?

Справочная информация / цель

У меня есть шаблон VMWare, который я развертываю, и я использую «спецификации настройки» VMWare для выполнения многих задач sysprep.

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

VMWare имеет функцию «Запускать один раз» как часть своих спецификаций настройки. В идеале я хотел бы использовать это для вызова сценария PowerShell с повышенными привилегиями, чтобы он запускался, когда я впервые вхожу в систему в качестве администратора.

Что я пробовал / Проблемы

Вопрос

Мне кажется, что это может быть невозможно. Я неправильно об этом думаю? Должен ли я вместо этого создавать удаленную PS1 и запускать ее на созданном компьютере? Это выполнимо, но я хотел попытаться максимально автоматизировать вещи и устранить любую путаницу для людей, помимо меня, которые могут захотеть развернуть.

Взято из http://poshcode.org/695

function elevate-process
{
$file, [string]$arguments = $args;
$psi = new-object System.Diagnostics.ProcessStartInfo $file;
$psi.Arguments = $arguments;
$psi.Verb = "runas";
[System.Diagnostics.Process]::Start($psi);
}

elevate-process [full path to your process here]

Что сказал @Tony Roth. Если собственный процесс настройки VMware запускается с повышенными привилегиями, то все его дочерние процессы также должны делать это, поэтому запуск сценария Powershell должен выполняться со связанными процессами.

Если нет, то я не знаю, как подняться без взаимодействия. Вот в чем суть системы высот. Приведенный выше код повысит уровень процесса с неадминистративного уровня до пользовательского пространства с правами администратора, однако вам придется щелкнуть мимо UAC, я использую это в своих сборках.

Startup содержит сценарий Elevate-Process, который просто вызывает основной сценарий. Когда машина запускается после первой загрузки, она запускается, вы нажимаете ОК в UAC, а все остальное она завершает с правами администратора.

В качестве альтернативы, возможно, отключите UAC в вашей начальной сборке, а затем включите код для его повторного включения в конце сборки?

Похоже, это поможет в этом но обратите внимание, я не использовал его.