Как вывести список сервисов vCenter (VCSA) в powershell/Powercli

Мне нужно перечислить службы vCenter (VCSA) на базе Linux в сценарии powercli/powershell. Я не знаю ни одного командлета powercli, в котором будут перечислены службы. Я подумал об использовании vSphere REST API, впервые представленного в vSphere 6.5.

Два вызова, которые я пытался выполнить с помощью проводника postman/vSphere API, не удалось авторизовать:

https://{server}/rest/vcenter/services

https://{server}/rest/appliance/services

Я смог использовать [email protected] для получения списка виртуальных машин и создания новых виртуальных машин, поэтому я не уверен, что происходит.

Протестированные сервисы листинга с использованием vSphere REST API в postman и REST Explorer.

 $url = "https://{server}/rest/vcenter/services"
Invoke-RestMethod -Method 'Get' -Uri $url -Credential $Cred 

скриншот VMware HOL

Мои вопросы: 1) Есть ли команда powercli для перечисления сервисов в vCenter на базе Linux (VCSA) 2) Любая идея, как это сделать с помощью vSphere REST API


person Israa El-Sakka    schedule 10.09.2019    source источник
comment
Есть загружаемый инструмент управления услугами, который вы, возможно, используете?   -  person Scepticalist    schedule 10.09.2019
comment
Это может помочь virtuallyghetto.com /2017/01/   -  person Scepticalist    schedule 10.09.2019
comment
Привет, блог предназначен для vSphere 6.5 с VAMI REST API, я использую последнюю версию vSphere 6.7.   -  person Israa El-Sakka    schedule 10.09.2019


Ответы (1)


Ниже сработало. При запросе учетных данных используйте учетную запись SSO и подтвердите, что у этой учетной записи есть права на просмотр служб из клиента vSphere.

Проверьте: https://communities.vmware.com/thread/618154

$vcenter = <vcsa-FQDN>
$BaseUri = "https://$vcenter/rest/"

$SessionUri = $BaseUri + "com/vmware/cis/session"

$Cred = Get-Credential

$auth = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($Cred.UserName + ':' + $Cred.GetNetworkCredential().Password))

$header = @{

    'Authorization' = "Basic $auth"

}

$authResponse = (Invoke-RestMethod -Method Post -Headers $header -Uri $SessionUri).Value

$sessionHeader = @{"vmware-api-session-id" = $authResponse }

$result = Invoke-Restmethod -Method Get -Headers $sessionHeader -Uri ($BaseUri + "vcenter/services")

$result.value.value | select Name_Key, Health, State, Description_Key
person Israa El-Sakka    schedule 14.09.2019