gpt4 book ai didi

c# - 在 C# 中获取 PsExec.exe 的进程 ID 需要帮助吗?

转载 作者:太空狗 更新时间:2023-10-29 21:42:20 25 4
gpt4 key购买 nike

我正在使用下面的代码来调用 PsExec.exe,它会在两个服务器中调用我的控制台应用程序,但我无法获取所调用进程(我的控制台应用程序)的 ProcessId。

process.StandardOutput.ReadToEnd());只给我服务器名,而不是完整的内容。

你能帮我获取 PsExec.exe 在远程服务器上生成的进程 ID 吗??

        Process process = new Process();
ProcessStartInfo psi = new ProcessStartInfo(@"PsExec.exe");
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.RedirectStandardInput = true;
psi.WindowStyle = ProcessWindowStyle.Minimized;
psi.CreateNoWindow = true;
psi.Arguments = @"-i -u Username -p xxxxxx \\server1,server2 C:\data\GridWorker\GridWorker.exe 100000";
process.StartInfo = psi;
process.Start();

Console.WriteLine(process.StandardOutput.ReadToEnd());

最佳答案

尝试将 -d 参数添加到 PsExec 命令行。

Don't wait for application to terminate. Only use this option for non-interactive applications.

这应该正确地将进程 ID 返回给 StandardError。

例子:

ProcessStartInfo psi = new ProcessStartInfo(
@"PsExec.exe",
@"-d -i -u user -p password \\server C:\WINDOWS\system32\mspaint.exe")
{
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
WindowStyle = ProcessWindowStyle.Minimized,
CreateNoWindow = true
};
Process process = Process.Start(psi);

Console.WriteLine(process.StandardError.ReadToEnd());

输出:

PsExec v1.94 - Execute processes remotely
Copyright (C) 2001-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

C:\WINDOWS\system32\mspaint.exe started with process ID 5896.

关于c# - 在 C# 中获取 PsExec.exe 的进程 ID 需要帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1879528/

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