做为一个后台程序猿,常常须要把一堆程序集(DLL)或者应用程序(EXE)复制到多个服务器上,实现程序的代码逻辑更新,用以测试新的功能或改动逻辑。这里给你们介绍一个本身实现的PowerShell脚本,方便你们替换DLL或者EXE到多个Windows机器上。html
用于方便复制多个文件到多个服务器上。shell
脚本的主要功能以下:缓存
命令参数简单以下,一共有三个可用参数:服务器
配置文件格式例子以下:学习
其中Server填远程服务器的地址,Service Display Name填复制文件前须要中止的Windows服务显示名字,Process Name填须要中止的进程名字,Item是要复制的文件或文件夹,以上参数能够有多个节点。测试
Last Write Time填时间戳,全部修改时间在这以后的文件夹和文件都将会被复制,只能有一个。优化
Destination Folder填要复制到的目的端机器的文件夹路径,若是没有会自动建立,只能有一个。ui
须要复制的源端文件夹以下:命令行
执行命令PowerShell窗口以下:设计
一个目的端服务器的效果:
使用这个脚本的时候可能会遇到一点问题,和环境配置有关,具体状况和解决方法以下:
如图,执行命令的时候报错:
解决方法:
以管理员运行Windows PowerShell,输入以下命令容许执行脚本” Set-ExecutionPolicy -ExecutionPolicy Unrestricted”。若是不想设置成Unrestricted,具体参考Set-ExecutionPolicy。
如图,执行命令的时候报错:
解决方法:
以管理员运行Command Prompt,输入以下命令”winrm set winrm/config/client @{TrustedHosts="VM1,VM2"}”设置信任主机。
尽管密码已经确保正确了,可是远程建立文件夹或者复制文件的时候仍然报用户名密码错误。
解决方法:
一是手动直接访问UNC路径,把用户名密码保存在系统中,二是执行以下命令” cmdkey /add:targetname /user:username /pass:password”,把用户名密码缓存到系统中。
错误以下:
解决方法:
在目的端机器(10.2.38.53)上管理员运行Command Prompt,输入命令”winrm quickconfig”开启服务:
截图1.
截图2.
Note:脚本暂时不够完善,完成一点功能,可能有BUG,还有更多的优化空间,好比并行执行复制命令,支持全命令参数等,之后可能会继续更新优化。
脚本下载地址:http://files.cnblogs.com/files/lavender000/OneClickToReplaceMultipleFilesToMultipleServers.zip。
[原创文章,转载请注明出处,仅供学习研究之用,若有错误请留言,如喜欢请推荐,谢谢支持]
[原文:http://www.cnblogs.com/lavender000/p/6958618.html,来自永远薰薰]