Powershell VMWare PowerCLI获取磁盘关闭vm的使用';s

Powershell VMWare PowerCLI获取磁盘关闭vm的使用';s,powershell,virtual-machine,vmware,powercli,power-state,Powershell,Virtual Machine,Vmware,Powercli,Power State,我正在创建一个脚本,它获取所有vm并显示磁盘空间。问题是,如果虚拟机关闭电源,它将不会显示已使用的磁盘空间 以下是两个示例:第一个示例中的VM已通电: PowerCLI C:\> Get-VM sluwv0039 Name PowerState Num CPUs MemoryGB ---- ---------- -------- -------- sluwv0039 PoweredOn 2

我正在创建一个脚本,它获取所有vm并显示磁盘空间。问题是,如果虚拟机关闭电源,它将不会显示已使用的磁盘空间

以下是两个示例:第一个示例中的VM已通电:

PowerCLI C:\> Get-VM sluwv0039

Name                 PowerState Num CPUs MemoryGB
----                 ---------- -------- --------
sluwv0039            PoweredOn  2        4.000

PowerCLI C:\> $VM = Get-VM sluwv0039
PowerCLI C:\> $VM.guest.disks

CapacityGB      FreeSpaceGB     Path
----------      -----------     ----
49.997          5.417           C:\
示例二:关闭虚拟机的电源:

PowerCLI C:\> Get-VM sluwv0012

Name                 PowerState Num CPUs MemoryGB
----                 ---------- -------- --------
sluwv0012            PoweredOff 4        8.000


PowerCLI C:\> $VM = Get-VM sluwv0012
PowerCLI C:\> $VM.guest.disks
PowerCLI C:\>

注意:最后一行是输出。没有“CapacityGB”等内容。

正确,该属性正在从来宾文件系统读取,以查看分区上剩余的空间。在您的情况下,C:\驱动器。如果VM已关闭,PowerCLI将无法找到该属性

或者,您可以查看
$vm.ExtensionData.Summary.Storage属性并进行一些粗略的转换。注意:它们的输出以字节为单位,因此您需要将它们转换为GB。示例:
$tempVM.ExtensionData.Summary.Storage.Committed/1GB


它并不精确,但总比完全没有输出要好。

正确,该属性正在从来宾文件系统读取数据,以查看分区上剩余的空间。在您的情况下,C:\驱动器。如果VM已关闭,PowerCLI将无法找到该属性

或者,您可以查看
$vm.ExtensionData.Summary.Storage属性并进行一些粗略的转换。注意:它们的输出以字节为单位,因此您需要将它们转换为GB。示例:
$tempVM.ExtensionData.Summary.Storage.Committed/1GB


它并不精确,但总比完全没有输出要好。

下面是显示vm规范的脚本示例:

获取Vm |选择对象名、PowerState、VMHost、numpu、MemoryGB、ProvisionedSpaceGB、{N=“HostName”;E={($.guest.HostName)}、{{N=“Gateway”;E={($.ExtensionData.guest.IpStack.IpRouteConfig.IpRoute.Gateway.IpAddress[0])}、{N=“DNS”;E={$.ExtensionData.guest.IpStack.DnsConfig.IpAddress}、{N=“IpAddress=”E.IpAddress.}类似于{168}=“Nics”;E={($.guest.Nics)},{N=”数据存储“;E={($$Get Datastore)},{N=”磁盘“;E={($.guest.Disks)},版本,@{N=”状态“;E={($.guest.State)},{N=”操作系统“;E={($$.guest.OSFullName)}”

示例输出如下所示:

名称状态VMHost NumCpu MemoryGB PowerState ProvisioniedSpaceGB版本IPAddress主机名OS NIC磁盘VMwareTools网关DNS 测试运行192.168.32.100 2 1 PoweredOn 43.1085147 v8 192.168.122.1 Linux(64位)网络适配器1:VM网络适配器2:local::Capacity:17167286272,FreeSpace:14212493312,Path:/Capacity:15188623360,FreeSpace:15154872320,Path:/media/文件容量:10724835328,FreeSpace:10672824320,Path:/var/日志容量:973770752,FreeSpace:690139136,Path:/boot guestToolsRunning 127.0.0.1


希望有用;)

以下是显示vm规范的脚本示例:

获取Vm |选择对象名、PowerState、VMHost、numpu、MemoryGB、ProvisionedSpaceGB、{N=“HostName”;E={($.guest.HostName)}、{{N=“Gateway”;E={($.ExtensionData.guest.IpStack.IpRouteConfig.IpRoute.Gateway.IpAddress[0])}、{N=“DNS”;E={$.ExtensionData.guest.IpStack.DnsConfig.IpAddress}、{N=“IpAddress=”E.IpAddress=}类似于{168}NIC“E={($.guest.Nics)},{N=“Datastore”;E={($$124; Get Datastore)},{N=“Disks”;E={($.guest.Disks)},Version,{N=“State”;E={($.guest.State)},{N=“OS”;E={($.guest.OSFullName)}

示例输出如下所示:

名称状态VMHost NumCpu MemoryGB PowerState ProvisioniedSpaceGB版本IPAddress主机名OS NIC磁盘VMwareTools网关DNS 测试运行192.168.32.100 2 1 PoweredOn 43.1085147 v8 192.168.122.1 Linux(64位)网络适配器1:VM网络适配器2:local::Capacity:17167286272,FreeSpace:14212493312,Path:/Capacity:15188623360,FreeSpace:15154872320,Path:/media/文件容量:10724835328,FreeSpace:10672824320,Path:/var/日志容量:973770752,FreeSpace:690139136,Path:/boot guestToolsRunning 127.0.0.1


希望有用;)

谢谢!为我工作。至少我不会得到一个空变量。谢谢!为我工作。至少我不会得到一个空变量。