作为一个后台程序猿,经常需要把一堆程序集(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远程执行命令问题解析)的更多相关文章

  1. Python_编写UDP通信编解码类、文件的上传、远程执行命令、黏包

    1.UDP通信编解码类 (1) 类 # ------------------UDP通信解码编码类------------------------ from socket import * class ...

  2. 利用scp 远程上传下载文件/文件夹和ssh远程执行命令

    利用scp传输文件 1.从服务器下载文件scp username@servername:/path/filename /tmp/local_destination例如scp codinglog@192 ...

  3. 使用paramiko远程执行命令、下发文件

    写部署脚本时,难免涉及到一些远程执行命令或者传输文件. 之前一直使用sh库,调用sh.ssh远程执行一些命令,sh.scp传输文件,但是实际使用中还是比较麻烦的,光是模拟用户登陆这一点,还需要单独定义 ...

  4. expect脚本同步文件 expect脚本指定host和要同步的文件 构建文件分发系统 批量远程执行命令

    自动同步文件 #!/usr/bin/expect set " spawn rsync -av root@.txt /tmp/ expect { "yes/no" { se ...

  5. 远程执行命令和文件分发shell脚本

    deploy.conf node01,all,other,datanode,journalnode,zookeeper, node02,all,other,datanode,journalnode,z ...

  6. 【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件

    本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传.下载 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. ...

  7. expect脚本同步文件、expect脚本指定host和要同步的文件、构建文件分发系统、批量远程执行命令

    7月20日任务 20.31 expect脚本同步文件20.32 expect脚本指定host和要同步的文件20.33 构建文件分发系统20.34 批量远程执行命令扩展:shell多线程 http:// ...

  8. Python Paramiko实现sftp文件上传下载以及远程执行命令

    一.简介 Paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令.文件传输等功能. 安装模块 默认Python没有自带,需要手动安装: pip3 install par ...

  9. Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件

    一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...

随机推荐

  1. 初遇stm32

    刚开始接触32,建一个工程都这么费劲,可能是keil安装时一些文件和库没有安装完整,真是坑啊. 回头可能还要从新安装,然后开始新的学习,争取十天之内入门32,在博客园这个强大的技术支持下, 想不入门都 ...

  2. Rookey.Frame v1.0 视频教程发布了

    经过昨天几个小时的折腾, Rookey.Frame v1.0开发视频教程终于发布了,由于是第一次做视频有很多地方做的不够好,后续我会慢慢改进,争取将视频教程做好. 本期发布视频: (一)Rookey. ...

  3. xLua中导出Dotween

    前言 在xlua的lua脚本中使用dotween,官方的文档中有提到可以导出,但未介绍详细的步骤,相信比较多的朋友有需要,刚好项目中也在使用xlua和dotween,所以做个笔记. 基础知识: xLu ...

  4. java集合的操作(set,Iterator)

    集合的操作 Iterator.Collection.Set和HashSet关系 Iterator<——Collection<——Set<——HashSet Iterator中的方法: ...

  5. WPF 杂谈——入门介绍

    对于WPF的技术笔者是又爱又恨.现在WPF的市场并不是很锦气.如果以WPF来吃饭的话,只怕会饿死在街头.同时现在向面WEB开发更是如火冲天.所以如果是新生的话,最好不要以WPF为主.做为选择性来学习一 ...

  6. linux网络编程(socket)之面向连接(TCP/IP)

    1.流程 服务器: 创建socket: 绑定端口: 监听: 监听到有连接请求,接受请求: 建立连接,开始对话. 客户端: 创建socket: 请求建立连接: 连接建立成功,开始对话. 2.实例代码 / ...

  7. 篇4 安卓app自动化测试-Appium API进阶

    篇4                 安卓app自动化测试-Appium API进阶 --lamecho辣么丑 1.1概要 大家好! 我是lamecho(辣么丑),今天是<安卓app自动化测试& ...

  8. 权限管理系统 mysql 数据脚本

    # SQL-Front 5.1 (Build 4.16) /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */; /*!40101 SET SQL_MODE='STRICT ...

  9. codeforces 591B Rebranding (模拟)

    Rebranding Problem Description The name of one small but proud corporation consists of n lowercase E ...

  10. UserManager

    刚刚学习servlet,打算学做一个小项目把前边学到的知识做一个总结. 由于只是实现了一些简单的功能,所以美工就凑合着看吧(美工其实也不太会). 首先项目整体架构如图 项目准备工作: 要用到mysql ...