【问题标题】:How To Capture Output from Non-elevated Process Run from Elevated Powershell如何从提升的 Powershell 捕获非提升进程运行的输出
【发布时间】:2022-11-22 12:01:47
【问题描述】:

我正在尝试更新一个提升的 PowerShell 脚本,该脚本在 BAT 文件上使用 StartProcess,该 BAT 文件在 PowerShell.exe 上运行 RunAs 以运行另一个没有提升的 PowerShell 脚本,以便克隆 git 存储库,以便以正常的方式创建目录非提升用户将可以使用。

  • 提升的 PS1:启动进程
    • => 提升.BAT: RunAs /trustlevel:0x20000
      • => 非高架 PS1

这在某些环境中失败了,我不知道为什么,所以我试图弄清楚如何从这个过程的所有级别捕获 stdout 和 stderr,但我没有看到错误或任何输出。我可以将其捕获到 BAT 文件级别,但我似乎看不到最内层的 Powershell 脚本中发生的任何事情。

这似乎只是以编程方式从提升的进程中克隆 Git 存储库的大量工作。有没有办法使这项工作或有更简单的方法?

【问题讨论】:

  • 使用一种非常不同、简单且稳定的方法怎么样?您是否有任何软件部署、补丁管理...至少活动目录可能会安装脚本并通过 gpo 更新过时的文件。否则尝试使用计划任务进行更新 - 也许在创建时使用脚本在成功后自行删除任务....

标签: powershell


【解决方案1】:

请尝试使用 ACL。您可以在父目录上进行设置,这样您甚至不需要在提升的上下文中运行脚本。

只需设置一个可以写入存储库父目录的“gitclone”帐户,然后将其余用户添加为读取+执行。

其余的将通过继承自动出现。

然后以该“gitclone”用户身份运行脚本。

【讨论】:

    猜你喜欢
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 2015-06-16
    • 2014-04-30
    相关资源
    最近更新 更多