我尝试通过psexec工具尝试启动远程命令,它在命令提示符下成功运行。但是在c#中,我得到以下输出错误:
访问被拒绝
。 这是我的命令:
psexec \ servername -u xxxxxxx -p xxxxxxxxxx -h -w“E:\”cmd / C “(dir)”^> file.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();
答案 0 :(得分:0)
对不起,我还没有发表评论!
阅读你的c#+ psexec代码,看起来像是发送的
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";
不应以psexec \servername -u xxxxxxx -p xxxxxxxxxx -h -w "E:\" cmd /C "(dir)" ^> file.txt
结尾吗?
为了测试我建议你创建一个字符串,它将接收这些值,然后显示它,只是为了确保正确的命令被设置。
另一件事是PSI.UseShellExecute = false;
,我知道一些命令代码必须将此设置为false才能正常工作,但我不知道psexec,您是否已经尝试将其设置为true?
答案 1 :(得分:0)
如果运行您的代码的服务器在域下,那么您需要将域与用户名一起添加。
因此,-u
标志将为-u your_domain_name\username
。