gpt4 book ai didi

sql-server - 从 xp_cmdshell 调用时 psexec 无法正常工作

转载 作者:行者123 更新时间:2023-12-03 00:04:49 30 4
gpt4 key购买 nike

我想从 SQL Server 远程运行 jarfile 到另一台计算机。为此,我发现我可以使用 PSEXEC 将命令远程发送到目标计算机,并使用 xp_cmdshell 这样我就可以从存储过程中调用 psexec 命令。

我已经提取了从 technet website 下载的 PSTools 。我将 PsExec.exe、PsExec64.exe 和 Eula.txt 复制到 SQL Server 的 C:\Windows 文件夹中。我已经在 SQL Server 的命令提示符中使用以下命令对其进行了测试,

psexec \\mymachine -u mydomain\myuser -p mypassword cmd /c "java -jar C:\WriteToFile.jar"

WriteToFile_U4.jar 写入共享文件夹中的文本文件。该共享文件夹实际上位于 SQL Server 中。运行上面的命令会更新文本文件。但是,当我尝试使用下面的代码通过 xp_cmdshell 运行 WriteToFile_U4.jar 时,文件不会更新。

EXEC master..xp_cmdshell 'psexec \\mymachine -u mydomain\myuser -p mypassword cmd /c "java -jar C:\WriteToFile.jar"'

SSMS 的结果 Pane 中还会显示一个奇怪的输出。 enter image description here

我已经在 WriteToFile_U4.jar 更新文本文件的文件夹安全性中添加了 SQL 服务代理

有谁知道如何处理这个问题吗?在我的问题中,我正在执行的 T-SQL 命令作为 SQL 服务代理执行是否重要?而不是作为服务器管理员帐户?

更新:

我尝试放弃 xp_cmdshell 想法,只是创建了一个类型为操作系统 (CmdExec)SQL Server 代理作业。该步骤的内容是,

cmd.exe /c "D:\runjarfileremote.bat"

bat文件的内容是,

psexec \\computer-name -u domain\user -p password cmd /c "hostname"

只是为了检查我是否可以在 SQL Server 代理作业中运行 psexec。但以下内容记录在我创建的作业的历史记录中。 enter image description here

但是,如果我将 bat 文件的内容更改为仅包含主机名。作业成功完成。所以我得出的结论是,当作为 SQL Server 代理作业调用时,psexec 并未真正正常运行。有什么办法可以做到这一点吗?还是我只是做错了什么?

最佳答案

psexec(与所有当前的 sysinternals 工具一样)在首次运行时提示任何用户接受许可证。由于它是由服务帐户运行的,因此可能会受到阻碍。

将/accepteula 添加到 psexec 命令(如果是 64 位操作系统 psexec64/accepteula)

关于sql-server - 从 xp_cmdshell 调用时 psexec 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40145970/

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