我绝不是PowerShell专家;我花了很长时间在谷歌搜索,但没有找到答案。
我的脚本的基本思想是使用命令行参数运行名为appcert.exe的Microsoft工具。 appcert.exe返回0,1或-1;我正在使用$lastexitcode
进行检查。
appcert.exe仅在Windows 7和Windows 8上运行,因此我在两者上运行了我的脚本。
在Windows 7x64(PS版本= 2.0)上一切正常。我可以手动运行所有相同的步骤。我在同一个PS窗口中看到appcert.exe的输出。
Windows 8x64(RTM)上的不同故事,PS版本= 3.0,CLRVersion = 4.0.30319.17929。
有时,appcert.exe运行“内联”(就像在Win7中一样);其他时候,启动命令窗口,appcert.exe输出飞过,命令窗口关闭。调用它的PS窗口无法检查$lastexitcode
(顺便说一句,它根本没有设置)。
我在机器上尝试了所有PS版本,结果如下:
appcert.exe在这些实例的单独窗口中启动:
appcert.exe在这些实例中内联启动:
无论是否:
,都可以获得上述行为& $CertToolPath
Cmd /c appcert.exe
Invoke-expression –command appcert.exe
[system.diagnostics.process]::start("appcert.exe")
我的同事们对此同样感到难过。
我的计算机位于测试域中,而不是工作组。我作为测试域的管理员登录到机器,所以从理论上讲,我已经是管理员了。
我也安装了MS工具作为管理员。事实上,我从不做任何事情,因为机器的本地管理员。有任何想法吗? :)
非常感谢, 塔尼亚
答案 0 :(得分:1)
你可以用其他任何exe来重复这个吗?您是否禁用了UAC提示?
appcert.exe是否可能需要以Admin身份运行,如果没有,它会自动重新启动为Admin(这应该会导致UAC提示,但是如果你关闭了它,它会显示为只是自动生成一个新实例)?