2017-03-03 82 views
0

这可能是不可能的,但我希望从命令行运行.ps1 powershell脚本,它需要在升级权限下运行,无需绕过任何UAC提示。提升无提示 - 动态runas启动进程

这是从脚本的角度来看,没有用户交互。因此,CMD或Powershell的“以管理员身份运行”不是一种选择。不能有任何UAC提示点击,因为这些提示很可能会被隐藏起来。

我的命令开始了这样的 -

powershell.exe -executionpolicy bypass -file .\remove-default-apps.ps1

这将启动名为.ps1罚款,但脚本将最终失败,因为在脚本中的命令需要提升(GET-AppxPackage | Remove- AppxPackage)

我的下一个尝试使用PowerShell来运行使用脚本 -

Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File MyScript.ps1' -Verb RunAs

但仍然会提示升高。 我可以手动从非升高的cmd窗口复制运行脚本的错误,但运行提升它可以正常工作。

任何人都知道这是否可能?或者有任何提示指向正确的方向,我尝试了很多其他方法(psexec,计划任务..),但无法实现这一点。

回答

3

这是设计。如果用某种方法可以忽略UAC,那么它会杀死UAC。每一个恶意的软件都会在没有提示的情况下升级,就像UAC之前的狂野西部一样。

使用海拔高度,您可以将其他事物设置为运行提升,无论是计划任务还是其他。在企业范围内运行这些事情最常见的情况是使用代理的配置管理(SCCM,LANDesk,Puppet,Salt等)或通过PSRemoting/PSexec进行远程运行。 (请注意,代理必须首先安装管理员权限)

至于删除预配软件包,这看起来像是在图像时间要完成的任务。在部署之前将其直接从WIM中删除,或者在仍处于WinPE中的映像放置后删除它,或者在删除SysPrep之前删除它。我偏向于第二种方法,并将我的所有图像任务编程为MDT,并且与默认的Windows图像接近。

如果你不想提示,你可以关闭UAC(或设置为永不通知等Win8 +)。如果您打算在多台计算机上执行操作,则可以通过组策略完成。但这不是明智的。

+0

我认为内心深处我知道这是一直以来的答案,但感谢您的确认。 我们使用配置管理(KACE),但Im努力让这些脚本通过这种方法运行。 我已经成功删除了我们的基础映像上的预配软件包,但是我的经理也想从Windows 7中使用就地升级。所以这需要在安装后进行。 我同意将UAC完全关闭..但即使在UAC关闭的测试中,此脚本也无法通过KACE成功运行。 – robotjones

0

碰到很多砖墙......我最终解决了我的问题。与暂时禁用UAC提示通过注册表允许powershelll命令,意在与海拔运行沿 https://technet.microsoft.com/en-gb/library/d08d6a02-4d5b-4929-87ad-98f03be11898?f=255&MSPPError=-2147217396

使用此 - 发现这个有用的工具。

我最后的剧本:

REG ADD HKLM \ SOFTWARE \微软\的Windows \ CurrentVersion \政策\系统/ V ConsentPromptBehaviorAdmin /吨REG_DWORD/d 0/F

迅速提升的%SystemRoot%\ sysnative \ WindowsPowerShell \ v1.0 \ powershell.exe -executionpolicy bypass -file remove-default-apps.ps1

REG ADD HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System/v ConsentPromptBehaviorAdmin/t REG_DWORD/d 5/f

+0

绝对不建议禁用UAC。 –