我们有一组文件需要ColdFusion复制到网络共享.但是,我们无法更改运行ColdFusion服务的用户,这意味着ColdFusion没有足够的权限来访问任何网络共享.我们有一个用户名和密码可以让我们访问,但我们不能在该帐户下运行整个ColdFusion服务.
有没有办法从ColdFusion中执行这些文件复制操作?可能是在新用户下生成cfthread,访问底层java,还是使用其他一些第三方组件?我们的后备是创建批处理文件并从Windows任务计划程序运行它将本地目录中的所有文件复制到网络共享,但这是一个次优的解决方案,因为它需要在CF代码库之外进行设置和维护.
一种选择是我过去使用过的.但是它需要访问cfexecute标签.如果您有权运行该标记(某些托管服务提供商不允许),那么您可以执行以下操作.
通过Window的共享映射网络驱动器(请注意,任何输出都写入netMessage变量):
这是您指定远程用户名和密码的位置
<cfexecute name="C:\WINDOWS\system32\net.exe"
arguments="use \\#remoteServerName#\#remoteShareName#\ #remoteAccountPassword# /user:#remoteServerName#\#remoteAccountUsername#"
variable="netMessage"
timeout="30">
</cfexecute>
Run Code Online (Sandbox Code Playgroud)
通过刚创建的映射驱动器将文件复制到网络驱动器(请注意,任何输出都写入robocopyMessage变量):
我在这里使用robocopy并建议您查看它而不是仅仅复制
<cfexecute name="C:\WINDOWS\system32\robocopy.exe"
arguments="#localDirectory# \\#remoteServerName#\#remoteShareName#\ #robocopyArguments#"
variable="robocopyMessage"
timeout="300">
</cfexecute>
Run Code Online (Sandbox Code Playgroud)
现在通过断开映射的网络驱动器来清理(注意任何输出都写入netMessage变量):
<cfexecute name="C:\WINDOWS\system32\net.exe"
arguments="use \\#remoteServerName#\#remoteShareName#\ /d"
variable="netMessage"
timeout="30">
</cfexecute>
Run Code Online (Sandbox Code Playgroud)
cfthread如果您愿意,也可以将此代码放在标记中.
| 归档时间: |
|
| 查看次数: |
640 次 |
| 最近记录: |