如何在 powershell / Powercli 中列出 vCenter (VCSA) 服务

How to list vCenter (VCSA) services in powershell / Powercli

我需要在 powercli / powershell 脚本中列出基于 Linux 的 vCenter (VCSA) 服务。 我不知道将列出服务的任何 powercli cmdlet。 我想到了使用 vSphere 6.5

中新引入的 vSphere REST API

我尝试使用 postman / vSphere API explorer 的两个调用因无法授权而失败:

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

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

我能够使用 administrator@corp.local 列出虚拟机并创建新虚拟机,所以我不确定发生了什么

在邮递员和 REST 资源管理器中使用 vSphere REST API 测试了列表服务

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

VMware HOL screenshot

我的问题: 1) 是否有 powercli 命令列出基于 linux 的 vCenter (VCSA) 中的服务 2) 知道如何使用 vSphere REST 完成此操作 API

以下有效。请在提示输入凭据时使用 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