我发现了两个很棒的技巧,我真的很想让他们一起工作,但是如何做到这一点完全是我的意思。
我刚发现的是:https://stackoverflow.com/a/2611394/12943这是一个批处理文件,它启动PowerShell并将自身提供给powershell,这很棒。
另一个技巧就是这个:https://stackoverflow.com/a/18739839/12943这样可以让PowerShell在必要时提升自己(一旦提升就将脚本提供给自己)
我认为如果批处理文件的第一行看起来像这样:
@findstr/v "^@f.*&" "%~f0"|powershell -&goto:eof
看起来像这样:
@findstr/v "^@f.*&" "%~f0"|powershell "start-process powershell -verb runas" -&goto:eof
但这不起作用,我无法做到正确(我认为在这种情况下,管道会进入原始的PowerShell流程,但不是你运行的流程)。
这两种方法显然不会轻易一起工作,因为它们使用类似的机制,但我无法想到有一个干净的解决方案,它可以让我通过输入名称轻松运行PowerShell脚本进入命令窗口并自行提升 - 无需任何事先设置或额外的软件(因为这是无法连接到互联网的系统上某些系统配置脚本的第一步)。
我可以(并且将会)通过简单地使用批处理文件解决方案并要求用户手动提升来实现这一点,但似乎应该有一种更简单的方法。
请注意,批处理文件似乎也绕过了执行策略,这有点好奇,但在这种情况下是首选。
答案 0 :(得分:0)
也许您应该自动提升批处理而不是ps脚本。从高架cmd运行powershell.exe会打开一个提升ps控制台。您可以在此处找到自动提升批次https://stackoverflow.com/a/12264592/381149。