powercli就不多介绍了,基于powershell的好东西,可以百度

#PowerShell基本语法

  1. # 注释
  2. <# .... #> 多行注释
  3. $VAR 所有变量的声明或者使用都需要加上$
  4. | 管道符,powershell拿到的都是对象,所以基于对象的传递和使用,请自行学习
  5. $_ 当前对象,类似于某个语言的this,写错请纠正

#基本命令,随时补充

  1. Get-command COMMAND_PART_NAME # 查找与参数相关的命令,可以使用通配符
  2. help COMMAND_NAME # 查看帮助文档
  3. $PSVersionTable # powershell版本信息,后续版本会弃用,建议用Get-Module
  4. Get-Module # 查看已加载的模块及版本,如果有但没使用过,可能不显示
  5. Get-Content FILE_PATH # 读取文件,并转成对象
  6. Import-CSV # 导入csv文件

#关于PowerShell对象的理解

  1. <#
  2. 自己很白话很粗浅的理解,如能帮助理解,纯属意外
  3. 用Import-csv来做演示,比如我有一个vms.csv,一共2列4行,第一列是name和ip,第2到4列分别是3台连接的虚拟机名和对应的ip
  4. #>
  5. # vms.csv
  6. name,ip
  7. vm1,10.0.0.1
  8. vm2,10.0.0.2
  9. vm3,10.0.0.3
  10. # 说下这些数据的用途,有时候批量克虚拟机的时候,需要指定名字和IP,这个文件就是用来做定义的,省得写循环了
  11. # 如何读取这个csv文件,并使用里面的数据呢
  12. # 以下使用powershell终端
  13. $VMS = Import-csv vms.csv # 引入csv文件,并赋值给$VMS
  14. $VMS
  15. <# 输出内容
  16. name ip
  17. ------ --
  18. vm1 10.0.0.1
  19. vm2 10.0.0.2
  20. vm3 10.0.0.3
  21. 这里显示的就不是用逗号分隔的了,而是以这种表格形式展示的对象
  22. #>
  23. # 取值
  24. $VMS[].name
  25. <# 输出内容
  26. vm1
  27. #>
  28. # 取值2
  29. $VMS[].name + ":" + $VMS[].ip
  30. <# 输出内容
  31. vm1:10.0.0.1
  32. #>
  33. # 这里可以看出来,Import-CSV的时候把符合条件的文件导入为一个组数对象,然后首行的为对象的参数名,下面行的为值,每行为一个,有多行,就有多个,而这里可以使用$VMS[]这个下标来获取相关的对象
  34. # 可以用一个foreach语言把所有数据全部取出来
  35. foreach($VM in $VMS){
  36. $VM.name + ":" + $VM.ip
  37. }
  38. <# 输出内容
  39. vm1:10.0.0.1
  40. vm2:10.0.0.2
  41. vm3:10.0.0.3
  42. #>

#安装PowerCLI,的PowerShell终端中操作,以下全是PowerShell 5.1环境下使用的

  1. $PSVersionTable # 查看PowerShell版本,最好是5.1的,不是的话自己去升级吧
    Install-Module -Name VMware.PowerCLI # 安装
  2. Set-ExecutionPolicy RemoteSigned # 修改脚本执行权限为RemoteSigned

#基本命令

  1. connect-viserver SERVER_NAME -USER USER_NAME -PASSWORD PASSWORD # 连接vcsa、esxi
    get-vm # 获取虚拟机
    new-vm # 新建虚拟机

#简单批量克隆

  1. foreach($n in ..) # 遍历1-10
  2. {
  3. new-vm -name vm$n -template temp1 -resourcepool resources -datastore datastore
  4. }

#安装模块

起因有个需求,测试环境,旧集群集群迁到新集群。

想写个脚本,一批一批的把某个集群下的虚拟机关机,取消注册,在另外一套集群中启起来。

不要跟我说什么跨vcenter的迁移,独立sso安装,历史原因。

思路1:

按主机,一台上去关虚拟机-->取消注册-->去新集群-->找到存储-->找到相关目录-->注册虚拟机-->开机

思路2:

依次把主机从A vcenter直接加到B vcenter下,再做虚拟机vmotion,类似摆渡船

  1. Get-Datastore | Search-Datastore
  2. Search-Datastore Datastore datastore1

找到案例,在存储里找文件,但是自己输的时候就报没有命令,后来查到需要VI-Module,下面这个git可以给powercli装modules

  1. git clone https://github.com/rgel/PowerCLi.git

将clone下来的Vi-Module整个目录扔到你的用户文档WindowsPowerShell\Modules下,运行这个

  1. Import-Module Vi-Module -Force -Verbose

  1. Get-Command -module Vi-Module # 获取这个模块的命令清单,就验证一下是不是成功了

  1. get-datastore iscsi_100G | Search-Datastore # 可以搜datastore了

参考文档:https://code.vmware.com/web/dp/tool/vmware-powercli/6.5.1

to be continue...

powercli 学习随笔的更多相关文章

  1. (转) 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ

    特别棒的一篇文章,仍不住转一下,留着以后需要时阅读 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ

  2. C#程序集Assembly学习随笔(第一版)_AX

    ①什么是程序集?可以把程序集简单理解为你的.NET项目在编译后生成的*.exe或*.dll文件.嗯,这个确实简单了些,但我是这么理解的.详细:http://blog.csdn.net/sws8327/ ...

  3. Hive入门学习随笔(一)

    Hive入门学习随笔(一) ===什么是Hive? 它可以来保存我们的数据,Hive的数据仓库与传统意义上的数据仓库还有区别. Hive跟传统方式是不一样的,Hive是建立在Hadoop HDFS基础 ...

  4. JavaScript ES6 数组新方法 学习随笔

    JavaScript ES6 数组新方法 学习随笔 新建数组 var arr = [1, 2, 2, 3, 4] includes 方法 includes 查找数组有无该参数 有返回true var ...

  5. 64位BASM学习随笔(一)

     64位BASM学习随笔(一) Delphi的BASM一直是我最喜爱的内嵌汇编语言,同C/C++的内联汇编相比,它更方便,更具灵活性,由于C/C++的内联汇编仅仅能是或插入式的汇编代码,函数花括号 ...

  6. typeScript学习随笔(一)

    TypeScript学习随笔(一) 这么久了还不没好好学习哈这么火的ts,边学边练边记吧! 啥子是TypeScript  TypeScript 是 JavaScript 的一个超集,支持 es6 标准 ...

  7. jquery学习随笔

    转)jquery学习随笔(jquery选择器)   jQuery的选择器是CSS 1-3,XPath的结合物.jQuery提取这二种查询语言最好的部分,融合后创造出了最终的jQuery表达式查询语言. ...

  8. Python学习随笔:使用xlwings设置和操作excel多行多列数据以及设置数据字体颜色填充色对齐方式的方法

    ☞ ░ 前往老猿Python博文目录 ░ 在前面老猿的文章中,<Python学习随笔:使用xlwings读取和操作Excel文件>.<Python学习随笔:使用xlwings读取和操 ...

  9. PyQt学习随笔:QTextEdit和QTextBrowser删除光标所在行内容的方法

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在使用QTextBrowser用于记录输出日志,并 ...

随机推荐

  1. 数据库表中不建索引,在插入数据时,通过sql语句防止重复添加

    sql 语句 INSERT IGNORE INTO table(aaa,bbb) SELECT '1111','2222' FROM DUAL WHERE NOT EXISTS( ' ) mybati ...

  2. DUILIB消息处理过程

    DUILIB消息处理机制 方法一. 首先窗口基类创建 CWindowWnd->Create() 调用 CWindowWnd->RegisterWindowClass() 注册 CWindo ...

  3. bind 小测试

    #测试其他功能临时搭建测试 主配置文件: [root@localhost named]# cat /etc/named.conf // // named.conf // // Provided by ...

  4. Python网络爬虫入门篇

    1.  预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. 2. Python爬虫基本流程 a. 发送请求 使用 ...

  5. 页面适配的小栗子 - github

    我模拟了一个QQ音乐的radiostation页面,用了媒体查询以及流式布局,页面大部分内容是js根据json生成的,使用了less来编写css样式表. 下面是仓库地址,感兴趣的小伙伴可以打开看看,将 ...

  6. 查看mysql中sql语句执行时间

    查看mysql版本:select version();方法一: show profiles.1. Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后.  ...

  7. [Java]如何制作一个WordCount-Plus的Plugin

    主类 每个Plugin都有一个主类实现了com.jihuayu.wordcount.api.Plugin接口,这个主类就是插件的路口. 获取命令介绍 可以通过向方法getCommandUsage的参数 ...

  8. hdu2844 Coins -----多重背包+二进制优化

    题目意思:给出你n种硬币的面额和数量,询问它能够组合成1~m元中的几种情况. 这题如果直接按照完全背包来写的话,会因为每一种硬币的数目1 ≤ Ci ≤ 1000而超时,所以这里需要运用二进制优化来解决 ...

  9. 解决 EDAS:Upload failed: The right margin is 0.535 in on page 1 问题

    参考: IEEETran page margins 解决 EDAS:Upload failed: The right margin is 0.535 in on page 1 问题 在 EDAS 上上 ...

  10. StringBuffer的delete方法与deleteCharAt方法的区别。

    delete方法与deleteCharAt两个方法都是用来删除StringBuffer字符串指定索引字符的方法, delete(int  begin,int  end)有两个参数,使用时删除索引从be ...