Le script ci-dessous est un exemple simple de l’utilisation de l’API Rest de Vcenter pour recuperer toute sorte d’information, nottament sur les machines virtuelles.
A noter que la limitation du nombre d’objet retournés oblige simplement a recuperer dans un premier temps la liste des hosts, puis par host la liste des VMs.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | ### QUERY VCENTER REST API TO GET VM LIST ### $user = ‘myaccount’ $pswd = Read-Host -Prompt "Enter Password" $vCenterName = ‘MyVcenter’ $encoded = [System.Text.Encoding] ::UTF8.GetBytes(( $user , $pswd -Join ‘:’)) $encodedPassword = [System.Convert] ::ToBase64String( $Encoded ) $authHeader = @{ Authorization = "Basic $($EncodedPassword)" } $sRest = @{ Method = ‘Post’ Uri = "https://$($vCenterName)/rest/com/vmware/cis/session" Headers = $authHeader } $result = Invoke-RestMethod @sRest # Get TokenID $authHeader = @{ ‘vmware-api-session-id’ = $result .value } # Get All Hosts $resultgethost = Invoke-RestMethod -Uri $gethosts -Headers $authHeader $hostidlist = $resultgethost .value.host # For each host, get all VMs foreach ( $hostid in $hostidlist ) { $resultvm = Invoke-RestMethod -Uri $get_vm -Headers $authHeader [array] $FinalTableau += $resultvm } # Display Result $FinalTableau .value | select name,power_state # Output to CSV $CsvTab = $FinalTableau .value | select name,power_state | ConvertTo-Csv -Delimiter ';' -NoTypeInformation $CsvTab | Out-File .\VMList.csv |
0 commentaires