适用于System Center VMM的PowerShell脚本

时间:2016-04-21 11:43:30

标签: powershell scripting system-center

我是脚本新手,请帮助我编写一个脚本,该脚本将连接到VMM并获取如下所示的详细信息。

Name                 : ABC Machine
CPUCount             : 8
Memory               : 8192
DynamicMemoryEnabled : False

VHDType        : DynamicallyExpanding
MaximumSize    : 214748364800
Size           : 4194304
Location       : C:\ClusterStorage\Volume3\CRB\CRB Test Machine_disk_1.vhdx
Classification : Silver

VHDType        : DynamicallyExpanding
MaximumSize    : 4748364800
Size           : 41304
Location       : C:\ClusterStorage\Volume2\CRB\CRB Test Machine_disk_2.vhdx
Classification : Silver

我已经能够获得单独的命令来获取信息但是我无法制作一个脚本来为所有VM执行此操作并将磁盘大小转换为GB

我的工作命令是

Get-SCVirtualMachine -Name "ABC Machine" | select Name, CPUCount, Memory, DynamicMemoryEnabled | fl
$DiskINfo = Get-SCVirtualDiskDrive -VMMServer "abc.abcgroupcloud.com" -VM "ABC Machine"
$DiskINfo.VirtualHardDisk | select VHDType, MaximumSize, Size, Location, Classification

2 个答案:

答案 0 :(得分:0)

1-创建一个包含所有VM名称的数组(或使用get-content从文件中读取) 2-使用foreach循环来优先编写所有这些VM的脚本 3-使用calulated property以Gb显示大小

$computers=@("ABC machine","XYZ machine")

$computers | foreach-object {
    Get-SCVirtualMachine -Name $_ | select Name, CPUCount, Memory, DynamicMemoryEnabled | fl
    $DiskINfo = Get-SCVirtualDiskDrive -VMMServer "abc.abcgroupcloud.com" -VM $_
    $DiskINfo.VirtualHardDisk | select VHDType, MaximumSize, @{Name="Size in Gb";Expression={$($_.size)Mb / 1Gb}}, Location, Classification
}

答案 1 :(得分:0)

旧问题,但仅添加一些信息。 输入正确的主机组名称后,这将获取VMM主机组中的所有虚拟机。

$ VM将是数组,其中将包含您要查找的所有详细信息。

$hg = Get-SCVMHostGroup -Name "My Hostgroup Name"

$hosts = Get-SCVMHost -VMHostGroup $hg

$VMs = $null

ForEach ($h in $hosts) 
{
    $VMs += Get-SCVirtualMachine -VMHost $h
}