一键帮你复制多个文件到多个机器——PowerShell小脚本(内附PS远程执行命令问题解析)
作为一个后台程序猿,经常需要把一堆程序集(DLL)或者应用程序(EXE)复制到多个服务器上,实现程序的代码逻辑更新,用以测试新的功能或改动逻辑。这里给大家介绍一个自己实现的PowerShell脚本,方便大家替换DLL或者EXE到多个Windows机器上。
一. 脚本用途
用于方便复制多个文件到多个服务器上。

二. 脚本功能
脚本的主要功能如下:
- 支持通过最后修改时间过滤文件,设定时间之前的文件不进行复制操作(逻辑设计源于Rebuild代码后只替换新Build出来的有改动的文件);
- 支持多文件夹多文件复制,文件夹和文件路径支持通配符;
- 通过配置文件,支持复制文件前停到相关Windows服务或进程,复制文件后还会把Windows服务启动(逻辑设计为了避免目的端已存在的文件被相关进程占用而导致复制失败的情况);
- 支持一次操作复制到多个服务器上;
- 支持命令行指定Computer参数,忽略配置文件中已经设置的多个服务器,只处理命令行中设置的服务器(逻辑设计为了处理这种情况:当复制到某一个目的端服务器失败的时候,解决问题后重新执行复制特定服务器的操作);
- 通过配置文件控制,无需每次都输入繁琐的命令,可多次循环使用。
三. 使用方法
命令参数简单如下,一共有三个可用参数:
- Path——配置文件路径,必备参数;
- Credential——连接到远程服务器的认证信息,如果传入时不指定,会弹框强制指定;
- Computer——需要操作的远程服务器地址或名字,如果传入,则忽略配置文件中设置的Server字段。

配置文件格式例子如下:

其中Server填远程服务器的地址,Service Display Name填复制文件前需要停止的Windows服务显示名字,Process Name填需要停止的进程名字,Item是要复制的文件或文件夹,以上参数可以有多个节点。
Last Write Time填时间戳,所有修改时间在这之后的文件夹和文件都将会被复制,只能有一个。
Destination Folder填要复制到的目的端机器的文件夹路径,如果没有会自动创建,只能有一个。
四. 效果截图
需要复制的源端文件夹如下:

执行命令PowerShell窗口如下:

一个目的端服务器的效果:

五. PowerShell远程执行命令异常情况解决
使用这个脚本的时候可能会遇到一点问题,和环境配置有关,具体情况和解决方法如下:
· Running scripts is disabled on the system
如图,执行命令的时候报错:

解决方法:
以管理员运行Windows PowerShell,输入如下命令允许执行脚本” Set-ExecutionPolicy -ExecutionPolicy Unrestricted”。如果不想设置成Unrestricted,具体参考Set-ExecutionPolicy。

· The remove servers are not in the local server’s WinRM TrusterHosts list
如图,执行命令的时候报错:

解决方法:
以管理员运行Command Prompt,输入如下命令”winrm set winrm/config/client @{TrustedHosts="VM1,VM2"}”设置信任主机。

· The user name or password is incorrect when creating new UNC folder
尽管密码已经确保正确了,但是远程创建文件夹或者复制文件的时候仍然报用户名密码错误。
解决方法:
一是手动直接访问UNC路径,把用户名密码保存在系统中,二是执行如下命令” cmdkey /add:targetname /user:username /pass:password”,把用户名密码缓存到系统中。

· The remote servers do not have WinRM service configured
错误如下:

解决方法:
在目的端机器(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,来自永远薰薰]
一键帮你复制多个文件到多个机器——PowerShell小脚本(内附PS远程执行命令问题解析)的更多相关文章
- Python_编写UDP通信编解码类、文件的上传、远程执行命令、黏包
1.UDP通信编解码类 (1) 类 # ------------------UDP通信解码编码类------------------------ from socket import * class ...
- 利用scp 远程上传下载文件/文件夹和ssh远程执行命令
利用scp传输文件 1.从服务器下载文件scp username@servername:/path/filename /tmp/local_destination例如scp codinglog@192 ...
- 使用paramiko远程执行命令、下发文件
写部署脚本时,难免涉及到一些远程执行命令或者传输文件. 之前一直使用sh库,调用sh.ssh远程执行一些命令,sh.scp传输文件,但是实际使用中还是比较麻烦的,光是模拟用户登陆这一点,还需要单独定义 ...
- expect脚本同步文件 expect脚本指定host和要同步的文件 构建文件分发系统 批量远程执行命令
自动同步文件 #!/usr/bin/expect set " spawn rsync -av root@.txt /tmp/ expect { "yes/no" { se ...
- 远程执行命令和文件分发shell脚本
deploy.conf node01,all,other,datanode,journalnode,zookeeper, node02,all,other,datanode,journalnode,z ...
- 【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件
本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传.下载 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. ...
- expect脚本同步文件、expect脚本指定host和要同步的文件、构建文件分发系统、批量远程执行命令
7月20日任务 20.31 expect脚本同步文件20.32 expect脚本指定host和要同步的文件20.33 构建文件分发系统20.34 批量远程执行命令扩展:shell多线程 http:// ...
- Python Paramiko实现sftp文件上传下载以及远程执行命令
一.简介 Paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令.文件传输等功能. 安装模块 默认Python没有自带,需要手动安装: pip3 install par ...
- Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件
一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...
随机推荐
- Google Chrome 默认非安全端口列表
1, // tcpmux7, // echo 9, // discard 11, // systat 13, // daytime 15, // netstat 17, // qotd 19, // ...
- Unity CommandInvokationFailure: Failed to re-package resources. 解决方案
在导入谷歌的SDK的时候,打包出来报错CommandInvokationFailure: Failed to re-package resources. 把Android SDK更新一下就轻松搞定了, ...
- 对java面向对象的初识
我其实一直想写点东西练练自己文笔,今天写下这篇技术类型的文章也没有一个好的格式和章法,但万事开头难,那么就从面向对象开始. 我们大部分人都知道互联网软件的存在,时刻影响了我们的现实生活,那么面向对象的 ...
- html渲染过程
用户输入url地址,浏览器依据域名寻觅IP地址浏览器向服务器发送http恳求,假如服务器段回来以301之类的重定向,浏览器依据相应头中的location再次发送恳求服务器端承受恳求,处理恳求生成htm ...
- Dora.Interception: 一个为.NET Core度身定制的AOP框架
多年从事框架设计开发使我有了一种强迫症,那就是见不得一个应用里频繁地出现重复的代码.之前经常Review别人的代码,一看到这样的程序,我就会想如何将这些重复的代码写在一个地方,然后采用“注入”的方式将 ...
- MVC 5 + EF6 完整教程16 -- 控制器详解
Controller作为持久层和展现层的桥梁, 封装了应用程序的逻辑,是MVC中的核心组件之一. 本篇文章我们就来谈谈 Controller, 主要讨论两个方面: Controller运行机制简介 C ...
- OD常用断点之CC断点
在做Windows平台软件逆向时,Ollydbg是极其常用的逆向工具,动态调试功能非常强大.在调试过程中,断点的使用有助于确定关键的破解位置,今天讲解的内容是OD常用断点中的CC断点. CC断点有很多 ...
- RocketMQ 介绍与基本使用
介绍 RocketMQ是阿里巴巴自研的第三代分布式消息中间件,是阿里系下开源的一款分布式.队列模型的消息中间件,原名Metaq,3.0 版本名称改为RocketMQ,是阿里参照kafka设计思想使用J ...
- ASP.NET MVC知识点总结
一直都有把MVC的知识点总结出来的打算,今日终于得偿所愿.话不多说,开工!!! 一· MVC MVC设计模式->MVC框架(前端开发框架),asp.net(webform) aspx M:Mo ...
- windows下安装mongodb以及node.js连接mongodb
一.MongoDB 下载 下载地址 https://www.mongodb.com/download-center#community 选择windows版下载,然后安装. 二.安装完毕后创建数据 ...