Задача выгрузить 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"
Чуть другой скрипт
# 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:
- Как с помощью powershell через групповые политики узнать на каких пк нужно дефрагментировать диск и время выполнения политик
- Как найти кому принадлежат несвязанные объекты vSAN Virtual Objects Unknown object type через powershell powercli
- Как сделать что бы VM в veeam добавлялись в задание автоматически. Сделал TAG для vm vmware Powercli.
- Как узнать кто давно не подключался к почтовому ящику в exchange.
- Как мониторить 1с кластер по пользователям с помощью grafana.