背景/目标
我有一个正在部署的 VMWare 模板,我正在使用 VMWare 的“自定义规范”来执行许多 sysprep 任务。
我需要完成的最后一件事是按顺序静默安装多个应用程序。我有一个执行此操作的 PowerShell 脚本,但它仅在提升时有效。
VMWare 具有“运行一次”功能作为其定制规范的一部分。理想情况下,我想使用它以提升的方式调用 PowerShell 脚本,以便它在我以管理员身份首次登录时运行。
我试过的/问题
- 我尝试从 Run Once 命令调用 PsExec -s,并让 PsExec 调用 powershell。不幸的是,PsExec 需要在提升的命令行中运行,所以这行不通。
问题
我突然想到这可能是不可能的。我想错了吗?我是否应该编写一个远程 PS1 并在创建的机器上运行它?这是可行的,但我想尽可能地尝试自动化,并消除除我之外可能想要部署的人的任何困惑。
取自http://poshcode.org/695
@Tony Roth 说的。如果 VMware 自己的自定义进程以提升的权限运行,那么它的所有子进程也应该这样做,因此在那里启动 Powershell 脚本应该与关联的进程一起运行。
如果不是,那么我不知道没有互动的提升方式。这就是高程系统的要点。上面的代码会将一个进程从非管理员提升到管理员用户空间,但是你必须点击过去的 UAC,我在我的构建中使用它。
Startup 包含简单调用主脚本的 Elevate-Process 脚本。当机器在第一次启动后启动时,它会启动它,您单击 UAC 上的确定,它以管理员权限完成其余部分。
作为替代方案,也许在您的初始构建中禁用 UAC,然后包含代码以在构建结束时重新启用它?
这看起来会有所帮助,但请注意我还没有使用过它。