我正在从VBScript运行以下代码:
Set objShell = CreateObject("Wscript.shell")
objShell.run("powershell.exe -Command ""Start-Process PowerShell -Verb RunAs""")
objShell.run("powershell.exe ""Add-MpPreference -ExclusionPath C:\Windows\Test1\Sub1','C:\Test2'""")
字符串
我收到一个提升提示。允许后,最后一行代码不会运行。
另外,以下代码行在PowerShell中工作正常。第二行需要高程,从第1行接收,
第一个月
我如何合并这些组合在一个脚本中在VBScript中运行?然后我希望PowerShell窗口首先关闭或不打开。
我试着把它们合并成一行,也把它们分开了。两条路都行不通。
1条答案
按热度按时间hjqgdpho1#
powershell.exe
(Windows PowerShell CLI)的单独调用中保留。powershell.exe
进行 * 单一 * 调用,以便(a)创建 * 提升的 * 进程(使用Start-Process
-Verb RunAs
),(b)在该进程 * 中执行命令 *。powershell.exe
调用,也就是说,您必须使用Start-Process -Verb RunAs
调用 * 另一个 *powershell.exe
,您可以在其中执行需要提升的调用。This answer原则上解释了所需的技术,但这里还有一个额外的转义要求,使调用 robust:
powershell.exe
的命令行上,"
字符。应该保留 * 作为命令的一部分执行 * 传递给-Command
必须是\
-转义;结合VBScript的转义:\""
.powershell.exe
调用,需要 * 另一 * 层\
-escaping以保留"
字符。作为 nested 调用中命令的一部分,如果你想传递你的文件路径 * 包含在"..."
* 中:结合VBScript的转义:\\\""
"..."
封装在这里不是严格必需的,但它通常是健壮地传递任意文件系统路径所必需的;虽然'...'
封装在语法上更容易,因为它不需要转义,但它会破坏碰巧包含'
本身的路径)将链接答案中的所有技术-隐藏、同步执行和退出代码捕获-应用到您的用例中:
字符串