PowerCLI 对vm批量关机
时间:2019-08-31
本文章向大家介绍PowerCLI 对vm批量关机,主要包括PowerCLI 对vm批量关机使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
https://docs.vmware.com/cn/VMware-vSphere/index.html 参考文档
获取 引用 库
Save-Module -Name VMware.PowerCLI -Path D:\PowerCLI
$ENV:PSModulePath 查看 ps模块路径
把下载的 模块 复制到 ps模块路径下(如把PowerCLI里的内容移到到C:\Program Files\WindowsPowerShell\Modules内)
建立一个 powershell 文件,代码如下,
应注意 修改下 EsxiHost 为Esxi 的IP,或vCenter的IP或安装VMware Workstation 的IP。
还要相应的密码EsxiPassWd 。
思路:
1:链接前,先禁用无证书 提示(有证书的忽略此处)。
2:获取所有 加电的主机
3:遍历主机的ToolsStatus ,也就是 tools 状态
4:如果tools 状态不为 toolsNotInstalled 的,则关闭客户机否则关机。
5:5秒后,获取所有加电主机。
6:如果数量不为0,则返回第2步,否则 向主机发送关机指令。
$TextUtf8 = New-Object -typename System.Text.UTF8Encoding Write-Host Write-Host " 安装tools的关闭系统,没安装tools的关闭电源" Write-Host " vCnter关机要 4-6 分钟" Write-Host pause $EsxiHost = "127.0.0.1" $EsxiUser = "root" $EsxiPassWd = "Passwd@yhc18" Write-Host " 正在连接 服务器 。。。 。。。" $ConnIgnore = Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -confirm:$false $ConnectVIServer = Connect-VIServer -Server $EsxiHost -username $EsxiUser -Password $EsxiPassWd while(1 -eq 1){ $PowerOnVm = get-vm | where {$_.PowerState -eq "PoweredOn"} $PowerOnNum=$PowerOnVm.count if($PowerOnVm.count -gt 0){ cls Write-Host "ID" . "vmName" "ToolsStatus" "(正在运行中)" $index = 0 $PowerOnVm | foreach{ $index++ if($_.extensiondata.guest.ToolsStatus -ne "toolsNotInstalled"){ Write-Host $index. $_.Name " on" }else{ Write-Host $index. $_.Name " off" } } Write-Host "------------------------------------------" $index2=0 $PowerOnVm | foreach{ if($_.extensiondata.guest.ToolsStatus -ne "toolsNotInstalled"){ $index2++; Write-Host "$index2/$PowerOnNum" "关闭客户机" $_.Name $stopGuest = Get-Vm -Name $_.Name |stop-VMGuest -confirm:$false -ErrorAction SilentlyContinue Start-Sleep -Seconds 3 }else{ $index2++; Write-Host "$index2/$PowerOnNum" "关闭机器" $_.Name $stopGuest = Get-Vm -Name $_.Name |stop-VM -confirm:$false -ErrorAction SilentlyContinue Start-Sleep -Seconds 3 } } }else{ $PowerOnHosts = Get-VMHost| Where {$_.Name -eq $EsxiHost} | Stop-VMHost -confirm:$false -Force:$true cls echo "虚拟机已关机完毕,发送Esxi关机指令,等待Esxi主机关机" pause break #跳出循环 } Start-Sleep -Seconds 5 }
原文地址:https://www.cnblogs.com/likehc/p/11439544.html
- SpringData JPA就是这么简单
- Openflow细节理解之—Buffer_id篇
- 移动商城项目总结
- 移动商城第一篇【搭建项目环境+数据模型】
- 移动商城第二篇(品牌管理模块)【文件上传、数据校验、CRUD】
- 手把手在亚马逊EC2上搭建Keras GPU
- 移动商城第三篇(商品管理)【查询商品、添加商品】
- 移动商城第四篇(商品管理)【添加商品续篇、商品审核和上下架、前台展示、后台筛选】
- 移动商城第五篇(用户模块)【用户登陆、回显用户、拦截器、收货地址】
- 移动商城第六篇【单品查询、静态化页面】
- 移动商城第七篇【购物车增删改查、提交订单】
- Shiro入门这篇就够了【Shiro的基础知识、回顾URL拦截】
- OFTest(一):如何忽略一些字段在端口poll报文
- Shiro第二篇【授权、整合Spirng、过滤器】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Go语言实现UDP通信
- Android多渠道打包的方法步骤
- Android编程实现压缩图片并加载显示的方法
- Android串口通信封装之OkUSB的示例代码
- Android 中Activity 之间传递参数
- Android开发简单实现摇动动画的方法
- Android 中menu同时显示图标和文字的实现
- android基于SwipeRefreshLayout实现类QQ的侧滑删除
- PopupWindow自定义位置显示的实现代码
- Bootstrap 下拉菜单.dropdown的具体使用方法
- Android访问assets本地json文件的方法
- Android延时操作的三种方法
- 5步教你快速写一个android Router路由框架
- Android 中使用RecyclerView实现底部翻页
- Android中Glide库的使用小技巧总结