前言
这是陪伴我很久的一个工具,2015-2017年,从0到1,看着它长大。
现在回头来看,用ps写运维工具的我就是第一人了。

tab1 文件传送

连接资讯

格式: ip|域名地址,主机标签,凭据文件名

ip|域名地址: server地址
主机标签: 根据需要进行定义,后面会对这个栏位进行模糊匹配达到选取主机的目的。
凭据文件名: powershell中可以对windows登录凭据进行加密存储成文件。后期登录时回直接引用该文件。

凭据文件

凭据文件实际是一个对象, 其中用户名为明文存储,密码为加密文件



文件上传概述

  1. 需要一个本地文件夹做本地路径,本地路径下的所有文件都会执行文件上传操作
  2. 需要设定目的路径,即为远端的服务器的实际路径的集合。因为对于每类业务主机路径不同,且每台也有差异,以匹配的方式进行处理。
  3. 需要设定目的服务器,对应上文中server.ini 的主机标签。
    假设已有的server集合{ttcd1,ttcd2, tcd_fz, ttcd_uat, iia, iia2}, 此时若选择输入tcd_, 将有tcd_fz, ttcd_uat被匹配
  4. 文件上传原理:
    a. server安装ps, 并且允许连接管理(enable-psremoting,默认端口5985 ,HTTP协议),修改默认端口新增防火墙设定。
    b. 在打开server会话后,使用自定义的send-files():改写copy-files ,获取文件上传的必要参数。先修改原有的文件的后缀并加上时间标记,将本地新文件对原有文件进行覆盖。
    c. 完成后关闭会话。

局部代码:

##建立server组会话
function new-serversessions
{[CmdletBinding()][OutputType([int])]Param([parameter(position=1)][string[]]$filter)$error.clear()$filter = $filter.split(",")if(Test-Path $home\server.ini){$lists =Import-Csv -Path $home"\server.ini"foreach($f in $filter){  #filter [i] 匹配server.ini $list = $lists |where name -Match $fif($list.count -ne 0){ #忽略密码步骤# try{"服务器连接中.."foreach($l in $list){$str = "$home\"+$l.pwd+".pwd"$cre =  import-clixml $strnew-pssession -computername $l.ip -credential $cre -Port 7891 -Name $l.type |out-null#  }}#catch [exception]# {"密码文件错误"}}else { #指定机器输入密码"请输入 【" + $f+"】密码"new-pssession -computername $f -credential administrator -port 7891|out-null}}}else{New-Item $home"\server.ini"notepad $home"\server.ini""会话建立失败"} $resulttextbox.text =   "连线结束"$resulttextbox.lines +=   $error$error.clear()
}
#####send-files 片段process{$s = Get-PSSessionif($s.count -eq 0){"Exception"}foreach($session in $s){foreach($srcc in $src){$filename = ''foreach($destt in $dest){$result = Invoke-Command -Session $session -ScriptBlock{param([string]$destt)Test-Path -path $destt} -ArgumentList ($destt)if($result){if( $srcc -replace '(.*\\)*(.*\..*)','$2' -match '\.'){$filepath = $destt+($srcc -replace '(.*\\)*(.*\..*)','\$2')$newfname =$destt+'\'+($srcc -replace '(.*\\)*(.*)','$2')+(get-date).ToString(".yyyyMMdd.HHmmss")$isnewfile = Invoke-Command -Session $session -ScriptBlock{param([string]$filepath)Test-Path -path $filepath} -ArgumentList ($filepath)if($isnewfile){Invoke-Command -Session $session -ScriptBlock{param([string]$filepath,[string]$newfname)copy-item $filepath $newfname -Force} -ArgumentList ($filepath,$newfname)}}try{Copy-Item -path $srcc  -destination  $destt -ToSession $session -Recurse -Force }catch [exception]{}$str =   Invoke-Command -Session $session -ScriptBlock{param([string]$filepath)get-item $filepath |select name,lastaccesstime} -ArgumentList ($filepath)$session.computername +":$srcc -> $destt  done" #  $str|select pscomputername, name, lastaccesstime |Format-Table  #检查文件更新时间}}}#foreach session 结束遍历}} ##### 上传
$sbutton.add_click({
$error.Clear()$resulttextbox.text =   "检查文件列表..  "$list =   get-item C:\ps_upload\* |select fullname $sendfilepage.Controls.Remove($sbutton)$resulttextbox.text =   "执行中...  "#传送文件 实时回显结果&提示send-files  $list.fullname  $destbox.Text $destserver.Text |out-string -stream |foreach-object{$resulttextbox.lines = $resulttextbox.lines + $_; $powershellforms.update() }$resulttextbox.lines= $resulttextbox.lines +  "执行完成~~~~~~~~  ";$powershellforms.Refresh()$sendfilepage.Controls.add($sbutton) })

【运维开发】基于powershell的运维UI工具(一)相关推荐

  1. python的运维开发课程_Python自动化运维开发实战课程方案

    课程简介:? ? 随着信息时代的持续发展,IT运维已经成为IT服务内涵中重要的组成部分.面对越来越复杂的业务以及日趋多样化的用户需求,不断扩展的IT应用需要合理的IT运维保障IT服务灵活便捷.安全稳定 ...

  2. matlab为什么要升维数,基于MATLAB和升维投影法的手写字符识别输入系统

    256 现代交际·2019年6期 作者简介:王思达,长春师范大学学生,研究方向:计算机科学与技术:刘勇,长春师范大学学生,研究方向:计算机科学与技术:袁汇灵, 长春师范大学学生,研究方向:计算机科学与 ...

  3. 微信开发-基于Ngrok的内网穿透工具-netapp

    关键词: 微信开发,内网穿透,Ngrok,netapp 概述: 看到一篇博文介绍微信开发的,因为正在做这个东西,就认真看了一下,其中博文的第一章介绍了如何搭建自己的微信测试环境,为了解决微信开发中的调 ...

  4. golang的运维开发

    运维开发工程师( devops 工程师) 10k-20k 工作职责: 负责公司基于容器云产品的落地实施. 设计并开发配置管理.发布部署.监控等运维自动化系统. 负责基于开源工具集二次开发,对接平台接口 ...

  5. python bottle框架 运维_python bottle框架(WEB开发、运维开发)教程 | linux系统运维...

    教程目录 一:python基础 二:bottle基础 python bottle 框架基础教程:环境部署 三:WEB开发教程 四:运维开发教程 运维开发(1.1):框架.结构介绍 运维开发(1.2): ...

  6. 运维开发工程师(BKDS)理论基础

    运维开发工程师(BKDS)理论基础 蓝鲸SaaS开发框架包含哪些Web防护策略? A. 防 CSRF 攻击 B. 防 XSS 攻击 C. 防 SQL注入 D. 没有Web安全防护 正确答案:A,B,C ...

  7. 运维工程师和运维开发工程师区别有哪些?

    前言 在IT运维领域内,运维师分为很多类型,例如运维工程师和运维开发工程师.二者虽然同样做着运维的工作,但是二者有着本质区别的.那么运维工程师和运维开发工程师区别有哪些?无论是从岗位职责,还是从技能要 ...

  8. 开发和运维的关系,实施和运维的区别

    随着网络的发展,想要把企业网站建设好,建设完成后运营好实现盈利,就需要很多人员的支持,其中运维岗位和开发岗位尤其重要. 说到运维,基本上应该是甲方职位了 ,乙方一般是研发和实施.从基层职位看,运维和开 ...

  9. DevOps运维开发一体化【超详细】

    文章目录 前言 一.DevOps是什么? 1.1.软件开发的演变 1.2.什么是DevOps? 1.3.DevOps案例研究 二.DevOps工具链(工具准备是实现DevOps的硬性要求) 2.1.G ...

最新文章

  1. a标签被选择的底色_实施特殊管理,婴配乳粉标签书写有规矩(下)
  2. hadoop+hive+flink+hbase交互的版本兼容性
  3. 关于 Node.js 参数 max-old-space-size
  4. Linux进程+进程间通信IPC
  5. 熊仔科技Steamduino PIC18F46J50主控板 部分原理图
  6. Mybatis源码阅读(四):核心接口4.2——Executor(上)
  7. mysql数据库安全配置规范_MySQL数据库安全配置
  8. 第八届蓝桥杯第八题日期问题
  9. MD文档编写利器《Typora》
  10. 如何生成3分钟,5分钟,n分钟K线数据
  11. PHP在线横幅广告店标LOGO制作网站源码
  12. matlab计算正弦信号基波,Matlab入门篇——正弦信号、实指数信号和复指数信号的仿真.ppt...
  13. LeetCode.1046-最后的石头重量(Last Stone Weight)
  14. 记录自己关于Linux的学习和RHCSA、RHCE认证相关
  15. Windows 打开和关闭默认共享方法汇总
  16. cat全链路监控_全链路监控选型
  17. Prior-Induced Information Alignment for Image Matting
  18. 终于搞定Paypal了
  19. CVPR2020 Learning in the Frequency Domain学习笔记
  20. 笨方法学python40-42

热门文章

  1. 使用神卓互联内网穿透实现微信公众号开发:介绍了如何通过神卓互联实现微信公众号的开发和调试。
  2. 计算机二级vf索引建立,计算机二级VFP辅导:在VFP中建立索引文件的方法
  3. Unreal Engine 5 电脑配置
  4. linux中date命令如何设置时间戳,Linux基本命令之date命令的参数及获时间戳的方法...
  5. 《消失在醒来后》读后感
  6. 软件太臃肿了,如何解决?
  7. 基础dp C Monkey and Banana (类最长上升子序列)
  8. There are n lockers in a hallway numbered sequentially from 1 to n. Initially, all the locker doors
  9. 快速启动软件 Listarty
  10. springmvc整个shiro实现Perms的权限认证(细粒度)(三)