我有一个批处理文件,其中一部分将文件夹及其内容复制到本地目录,然后继续批处理,然后尝试执行该文件夹的内容。本地运行它适用于所有wintel操作系统,并将文件从\ networkshare \ folder *。*复制到%systemdrive%\ temp \。
我试图使用例如psexec @ serverlist.txt -c batfile.bat -s -f -d来复制文件,然后远程执行它,但问题是远程运行时不会复制文件。我认为远程执行批处理文件后,身份验证问题,远程系统将无法访问/验证网络共享
我尝试了xcopy,copy,robocopy。
答案 0 :(得分:0)
AFAIK您只能使用隐式凭据对下一跳进行身份验证。即使您的用户具有所需的权限,从第一跳到第二跳的连接尝试也将失败。参见例如here获得解释。
试试这个:
psexec @serverlist.txt -u %USERDOMAIN%\%USERNAME% -d -c batfile.bat
使用显式凭据,以便针对远程主机进行身份验证。这样,第二跳将成为经过身份验证的会话的下一跳。不要将脚本作为LOCAL SYSTEM(-s
)运行,因为该帐户仅限于本地资源。
答案 1 :(得分:0)
我过去曾遇到过这个问题。如果能够,只需从UNC路径运行脚本,而不是尝试复制/运行BAT文件。我认为问题在于BAT文件实际上无法通过PSEXEC运行并像你想象的那样复制。它是否提供退出代码?
这是我前一段时间用来安装Adobe阅读器的例子。我试图通过批处理文件但没有骰子。无论我是否复制它,我都无法在批处理文件中运行它。我不记得确切的原因,我认为它与系统中调用批处理文件的方式有关,并且在某种本地环境中运行。不要引用我,虽然我不记得确切的原因。
这是我的代码示例:
psexec /accepteula \\%computer% -s cmd /c msiexec /i "\\UNC\Software\adobe\Adobe Reader 7.0.9.msi" TRANSFORMS="acrobat7.mst" /qn