Перейти к содержимому

Как сделать отчет vm с тегами(tags) и записями блокнота(Note) с помощью Vmware powercli в одну строку.

Задача выгрузить vm с тегами и записями в csv

$vcenter = "msk-vc.bd.ru"

Connect-VIServer $vcenter 

$Locations = ('Data')

$VmInfo = ForEach ($Datacenter in (Get-Datacenter -Name $Locations)) {

     ForEach ($VM in ($Datacenter | Get-VM | where {$_.powerstate -match "on"} | Get-VMGuest)) {

        $vm | Select @{N="VM_NAME#";E={$vm.VM.name}},

           # @{N="VM_CPU_Core#";E={$VM.VM.NumCPU}},

           # @{N="VM_IP#";E={$vm.IPAddress}},

            @{N="VM_OS";E={$vm.OSFullName}},

            @{N="VM_DC";E={$Datacenter.name}},

            @{N='VM_Cluster';E={(Get-Cluster -VM $VM.VM).Name}},

            @{N="VM_NOTES";E={$VM.VM.Notes.Replace("`n",'/')}},

            @{N='VM_Tags';E={(Get-TagAssignment -Entity $VM.VM).Tag.Name -join '|'}}

     }

}

$VmInfo | Export-Csv -Path "c:\tmp\testnotes.csv" -NoTypeInformation -UseCulture -Encoding "UTF8"

Как сделать отчет vm с тегами(tags) и записями блокнота(Note) с помощью Vmware powercli в одну строку.

Чуть другой скрипт

# Connect to the vCenter
#Connect-VIServer vCenter1 -user user1 -Password "password"
Connect-VIServer msk-vcs.bd.ru
 
 $Locations = ('DataS')
 
#Create vmInfo object
$vmInfo = @()
$vmInfoTemp = New-Object "PSCustomObject"
$vmInfoTemp | Add-Member -MemberType NoteProperty -Name VMName -Value ""
$vmInfoTemp | Add-Member -MemberType NoteProperty -Name ToolsVersion -Value ""
$vmInfoTemp | Add-Member -MemberType NoteProperty -Name HWVersion -Value ""
$vmCategories = Get-TagCategory
$vmCategories | %{$vmInfoTemp | Add-Member -MemberType NoteProperty -Name $_.Name -Value "" }
$vmInfo += $vmInfoTemp
  
get-vm -Location $Locations | Where {$_.PowerState -eq 'PoweredOn'} | %{
$vmInfoTemp = New-Object "PSCustomObject"
$toolsVersion = Get-VMGuest $_ | select -ExpandProperty ToolsVersion
$vmInfoTemp | Add-Member -MemberType NoteProperty -Name VMName -Value $_.Name
$vmInfoTemp | Add-Member -MemberType NoteProperty -Name ToolsVersion -Value $toolsVersion
$vmInfoTemp | Add-Member -MemberType NoteProperty -Name HWVersion -Value $_.Version
$vmInfoTemp | Add-Member -MemberType NoteProperty -Name Notes -Value $_.Notes.Replace("`n",'/')
$vmtags = ""
$vmtags = Get-TagAssignment -Entity $_
if($vmtags){
$vmCategories | %{
$tempVMtag = ""
$tempCategroy = $_.Name
$tempVMtag = $vmtags | Where-Object {$_.tag.category.name -match $tempCategroy}
if($tempVMtag)
{
$vmInfoTemp | Add-Member -MemberType NoteProperty -Name $tempCategroy -Value $tempVMtag.tag.name
}else {
$vmInfoTemp | Add-Member -MemberType NoteProperty -Name $tempCategroy -Value ""
}
}
}else{
$vmCategories | %{
$vmInfoTemp | Add-Member -MemberType NoteProperty -Name $_.name -Value ""
}
}
$vmInfo += $vmInfoTemp
}
  
$vmInfo | select * -Skip 1 | Export-CSV -Path "C:\tmp\result.csv" -NoTypeInformation -Force -Encoding "UTF8" -Delimiter ";"

 

Similar Posts:

Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *