无提示提升 - 动词 runas start-process

rob*_*nes 6 powershell batch-file

这可能是不可能的,但我希望从命令行运行 .ps1 powershell 脚本,它需要以提升的权限运行,而无需或绕过任何 UAC 提示。

这是从脚本的角度来看,没有用户交互。因此,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,计划任务......)但我无法实现这一点。

Ben*_*enH 6

这是设计使然。如果UAC可以在某种方法中被忽略,那么就会失去UAC的意义。每个恶意软件都会在没有提示的情况下自行升级,就像 UAC 之前的狂野西部一样。

通过提升,您可以设置其他东西来运行提升,无论是计划任务还是其他。在企业范围内运行此类事物的最常见方法是通过代理使用配置管理(SCCM、LANDesk、Puppet、Salt 等)或通过PSRemoting/远程运行PSexec。(请注意,首先必须以管理员权限安装代理)

至于删除预配的包,这似乎是在映像时完成的任务。要么在部署之前直接从 WIM 中删除,要么在放置映像后仍处于 WinPE 中的情况下在任务序列任务中删除它,要么在 SysPrep 之前删除。我偏向于第二种方法,即在 MDT 中保持所有映像任务的编程性,并尽可能接近默认的 Windows 映像。

如果您不想要提示,可以关闭UAC(或设置为从不通知等Win8+)。如果您想在多台计算机上执行此操作,则可以通过组策略来完成。然而,这并不明智。