Psexec 在 C# 代码中返回拒绝访问错误



我正在尝试通过 psexec 工具启动远程命令,它在命令提示符下成功运行。但是在 c# 中,我收到以下输出错误:

访问被拒绝

.这是我的命令:

psexec \servername -u xxxxxxx -p xxxx -h -w "E:\"厘米/C "(目录)" ^> 文件.txt

这是我的 C# 源代码:

ProcessStartInfo PSI = new ProcessStartInfo();
PSI.FileName = "cmd.exe";
PSI.RedirectStandardInput = true;
PSI.RedirectStandardOutput = true;
PSI.RedirectStandardError = true;
PSI.UseShellExecute = false;
PSI.CreateNoWindow = true;
PSI.WindowStyle = ProcessWindowStyle.Hidden;
PSI.Arguments = "psexec " + @"\servername -u xxxxxx -p xxxxxxxxx -h -w "+""E:\\" "+"cmd /C " +"""+"(dir)"+ "" " +"^> file.txt" ;
p.Start();
p.WaitForExit();
output = p.StandardOutput.ReadToEnd().ToString();
error = p.StandardError.ReadToEnd().ToString();

对不起,我还不能发表评论!

读取您的 c# + psexec 代码,看起来像它发送 psexec servername -u xxxxxxx -p xxxxxxxxxx -h -w "E:\" cmd /C "(dir)" ^> file.txt命令提示符

psexec servername -u xxxxxxx -p xxxxxxxxxx -h -w "E:" cmd /C "(dir)" ^> file.txt结尾不应该"psexec " + @"\servername -u xxxxxx -p xxxxxxxxx -h -w "+""E:\" "+"cmd /C " +"""+"(dir)"+ "" " +"^> file.txt";吗?

为了进行测试,我建议您创建一个字符串,该字符串将接收这些值然后显示它,以确保设置了正确的命令。

另一件事是PSI.UseShellExecute = false;,我知道某些命令代码必须有这个设置为 false 才能工作,但我不知道 psexec,您是否也已经尝试将其设置为 true?

如果运行代码的服务器位于域下,则需要添加域以及用户名。

因此,-u标志将是 -u your_domain_nameusername .

最新更新