У меня есть шаблон 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 в вашей начальной сборке, а затем включите код для его повторного включения в конце сборки?
Похоже, это поможет в этом но обратите внимание, я не использовал его.