gpt4 book ai didi

powershell - 从 PowerShell 窗口启动 .exe 有时会导致它在单独的窗口中运行,所以我看不到输出或获取 $lastexitcode

转载 作者:行者123 更新时间:2023-12-03 12:29:42 28 4
gpt4 key购买 nike

我绝不是 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 在单独的窗口中启动:
  • 在 PowerGUI 3.2.0.2237(使用 PS 2.0)中
  • 在常规 PowerShell(非管理员)中
  • 在 Windows PowerShell ISE(非管理员)中
  • appcert.exe 在以下情况下内联启动:
  • 以管理员身份运行 Powershell
  • 以管理员身份运行 ISE

  • 获得上述行为是否我:
  • 启动脚本,它像这样调用 appcert 命令:& $CertToolPath
  • cd 到工具的主目录并输入 .\appcert.exe
  • 运行这个:Cmd /c appcert.exe
  • 运行这个:Invoke-expression –command appcert.exe
  • 运行这个:[system.diagnostics.process]::start("appcert.exe")

  • 我的同事们也同样被这件事难住了。

    我的机器在测试域中,而不是工作组中。我以 test 域的管理员身份登录机器,所以理论上,我已经是管理员了。

    我也以管理员身份安装 MS 工具。事实上,我从来没有作为机器的本地管理员做任何事情。有任何想法吗? :)

    提前谢谢了,
    塔尼亚

    最佳答案

    你能用其他任何exe复制这个吗?您是否禁用了 UAC 提示?

    appcert.exe 是否可能需要以管理员身份运行,如果不是,它会自动以管理员身份重新启动(这应该会导致 UAC 提示,但如果您已将其关闭,它似乎只会产生一个自动创建新实例)?

    关于powershell - 从 PowerShell 窗口启动 .exe 有时会导致它在单独的窗口中运行,所以我看不到输出或获取 $lastexitcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12011974/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com