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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PowerCLIVMware vSphere管理工具的命令行界面,可以通过PowerShell脚本自动化管理VMware虚拟基础架构。new-vmPowerCLI中用于创建新虚拟机的命令。 以下是new-vm命令的语法和参数: ``` New-VM -Name <string> -VMHost <VMHost> -Datastore <Datastore> [-DiskStorageFormat <string>] [-DiskStorageFormatVariant <string>] [-DiskStorageLocation <string>] [-DiskStoragePolicy <ScsiLun>] [-DiskStorageReservationPolicy <string>] [-DiskStorageThinProvisioned] [-DiskStorageWriteThrough] [-DiskStorageIndependent] [-DiskStoragePersistent] [-DiskStorageEagerZeroedThick] [-DiskStorageRaw] [-MemoryStartupBytes <long>] [-MemoryBytes <long>] [-NumCpu <int>] [-NumCorePerSocket <int>] [-NetworkAdapter <NetworkAdapter[]>] [-GuestId <string>] [-Version <string>] [-Notes <string>] [-Description <string>] [-ResourcePool <ResourcePool>] [-Location <VirtualMachineLocation>] [-RunAsync] [-Server <VIServer[]>] [-WhatIf] [-Confirm] [<CommonParameters>] ``` 以下是new-vm命令中常用的参数: - Name:虚拟机的名称。 - VMHost:虚拟机所在的主机。 - Datastore:虚拟机所在的数据存储。 - DiskStorageFormat:指定磁盘格式,可以是Thin、Thick或EagerZeroedThick。 - MemoryStartupBytes:虚拟机启动时的内存大小。 - MemoryBytes:虚拟机的内存大小。 - NumCpu:虚拟机的CPU数量。 - NumCorePerSocket:每个CPU的核心数。 - NetworkAdapter:虚拟机的网络适配器。 - GuestId:虚拟机的操作系统类型。 - ResourcePool:虚拟机所在的资源池。 你可以通过运行以下命令来查看new-vm命令的详细帮助: ``` Get-Help New-VM -Detailed ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值