在Windows 2012 R2上使用管理员权限执行PowerShell脚本,无需用户交互

时间:2017-08-22 09:27:44

标签: powershell vmware windows-server-2012 windows-server-2012-r2

我们需要运行PowerShell脚本,以便在克隆和系统准备VM后设置Windows 2012 R2服务器VM(vSphere 6.0或6.5)的IPv6地址。

使用VMware来宾工具将脚本上传到C:\windows\temp,并使用本地管理员帐户的凭据自动执行。 它在PowerShell中执行,但调用的函数失败并显示“访问被拒绝”错误消息。

UAC在操作系统上处于活动状态,但本地安全策略设置为 “UAC:管理员批准模式下管理员的提升提示行为”设置为禁用。该脚本可以在PS中以任何模式手动运行,但只有在以管理员模式启动PS时才会成功。

问题是,如何让脚本在没有任何用户交互的情况下以管理员模式运行,或者能够使用预先存储的凭证集。该脚本还必须传递3个参数。

到目前为止,我发现的所有答案都需要用户交互(不可能)或存储加密密码,由于克隆后的sysprep,密码无效。

2 个答案:

答案 0 :(得分:0)

试试这个:

powershell -noprofile -command "&{ start-process powershell -ArgumentList '-noprofile -file C:\script\psfile.ps1' -verb RunAs}"

来源:https://social.technet.microsoft.com/Forums/ie/en-US/acf70a31-ceb4-4ea5-bac1-be2b25eb5560/how-to-run-as-admin-powershellps1-file-calling-in-batch-file?forum=winserverpowershell

答案 1 :(得分:0)

我们找到了解决方案:

本地或域管理员帐户(以及这些帐户)具有预设的UUID,告知操作系统该用户可以绕过管理员用户的UAC设置。本地Administrators组或Domain Admins组中的其他用户没有此功能,因此受到需要交互式UI的UAC限制。

通过vmware定制强制我们管理员密码的更改可以通过在我们的应用程序中的变量中记录新密码来解决,然后将其用作后续执行powershell脚本调用的凭据集。工作流程。

令人讨厌的是,Windows 2012R2应强制使用此帐户名,因为没有任何规则允许其他管理员用户提升执行powershell cmdlet的权限。