如何使用VM PowerCLI 訪問Vsphere Datastore

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用VM PowerCLI 訪問Vsphere Datastore相关的知识,希望对你有一定的参考价值。

参考技术A #添加vmwaremodule,需要安装vmwarepowercli;Add-PSSnapin-Name*vmware*#连接到虚拟机所在的vcenter服务器或esxi服务器;Connect-VIServer-Server172.26.1.100-usernameroot-Passwordwww@4321#单独修改虚拟机test1的网卡1类型,从E1000更改为vmxnet3;get-vm-Nametest1|Get-NetworkAdapter-Name"Networkadapter1"|Set-NetworkAdapter-TypeVmxnet3#批量修改虚拟机所以得网卡类型Get-VMtest1|Get-NetworkAdapter|Where$_.Type-eq"E1000"|Set-NetworkAdapter-TypeVmxnet3

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

 

 

以上是关于如何使用VM PowerCLI 訪問Vsphere Datastore的主要内容,如果未能解决你的问题,请参考以下文章

如何用vSphere PowerCLI命令实现主机维护模式

PowerCLi 管理VMware vCenter 批量部署导出导入

PowerCLi 管理VMware vCenter 批量部署导出导入

有没有vSphere PowerCLI命令实现ESXi5数据存储的扫描

PowerCLi VMware vCenter 通过自建的PXE Server一键批量部署常规New-VM

PowerCLi 通过自建PXE Server一键esxi7下批量部署常规New-VM