You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio中按钮调用CMD执行PsExec远程命令失败求助

解决PsExec远程执行命令的问题

你的代码存在几个关键错误,导致仅打开CMD窗口却无法执行PsExec命令:

  • CMD参数缺失/c:调用cmd.exe时必须添加/c参数,它用于告诉CMD执行后续命令后退出;如果不加,CMD只会打开空白窗口,不会执行你传入的命令。
  • PsExec命令顺序错误:正确的PsExec语法是psexec \\目标机器名 参数 要执行的程序,你把\\{pcName}放在了最前面,完全搞反了命令顺序。
  • 未指定PsExec路径(可选):如果PsExec不在系统PATH环境变量中,CMD会找不到该程序,建议直接指定它的完整路径,比如C:\Tools\PsExec.exe。

修正后的代码:

private void btnPsExec_Click(object sender, EventArgs e)
{
    string pcName = txtPcName.Text;
    // 修正命令顺序,添加cmd的/c参数,若需要则指定psexec完整路径
    string command = $"/c psexec \\\\{pcName} /s cmd";

    if (!string.IsNullOrEmpty(pcName))
    {
        try
        {
            ProcessStartInfo processInfo = new ProcessStartInfo
            {
                FileName = "cmd.exe",
                Arguments = command,
                UseShellExecute = true,
                CreateNoWindow = false,         
            };

            using (Process process = new Process())
            {
                process.StartInfo = processInfo;
                process.Start();
            }
        }
        catch (Exception ex)
        {
            HighlightableMessageBox msgBox = new HighlightableMessageBox("Error", $"An error occurred: {ex.Message}");
            msgBox.ShowDialog();
        }
    }
    else
    {
        HighlightableMessageBox msgBox = new HighlightableMessageBox("Input Error", "Please enter a PC name.");
        msgBox.ShowDialog();
    }
}

补充提示:

  • 若PsExec不在PATH中,把代码里的psexec替换为完整路径,比如C:\\PsTools\\psexec.exe(注意转义反斜杠)。
  • 确保运行程序的账号拥有远程机器的管理员权限,否则PsExec会执行失败。
  • 可以添加/accepteula参数跳过PsExec首次运行的许可协议弹窗,比如修改为psexec \\\\{pcName} /s /accepteula cmd。

内容的提问来源于stack exchange,提问作者M. Buschlen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 05:08:23