gpt4 book ai didi

powershell - 将子进程的输出重定向到父进程 - Powershell

转载 作者:行者123 更新时间:2023-12-02 23:15:40 26 4
gpt4 key购买 nike

我有 powershell 进程,我正在调用 Start-Process 或 System.Diagnostic.Process 以以其他用户身份启动子进程(以获取其他用户环境变量)

我尝试使用重定向输出,但它不起作用。下面是代码

    $process = New-Object System.Diagnostics.Process
$startinfo = New-Object "System.Diagnostics.ProcessStartInfo"

$startinfo.FileName = "powershell"
$startinfo.UserName = $user
$startinfo.Password = $pass
$startinfo.Arguments = $arguments
$startinfo.UseShellExecute = $False
$startinfo.RedirectStandardInput = $True

$process.StartInfo = $startinfo
$process.Start() | Out-Null
$process.WaitForExist()
$output = $process.StandardOutput.ReadToEnd()

我也试图以最小化或隐藏的方式运行这个过程,但它不起作用。

任何帮助将不胜感激
问候
Ajax

最佳答案

这是一个可以满足您要求的功能:

function Invoke-PSCommandAsUser
{
param(
[System.Management.Automation.PSCredential]$cred,
[System.String]$command
);

$psi = New-Object System.Diagnostics.ProcessStartInfo

$psi.RedirectStandardError = $True
$psi.RedirectStandardOutput = $True

$psi.UseShellExecute = $False
$psi.UserName = $cred.UserName
$psi.Password = $cred.Password

$psi.FileName = (Get-Command Powershell).Definition
$psi.Arguments = "-Command $command"

$p = [Diagnostics.Process]::Start($psi)
$p.WaitForExit()

Write-Output $p.StandardOutput.ReadToEnd()
}

根据 MSDN,如果您使用 Process.Start 作为机制,您将无法运行此隐藏

If the UserName and Password properties of the StartInfo instance are set, the unmanaged CreateProcessWithLogonW function is called, which starts the process in a new window even if the CreateNoWindow property value is true or the WindowStyle property value is Hidden. - source

关于powershell - 将子进程的输出重定向到父进程 - Powershell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11323922/

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