<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Récupérer la version ESXi ainsi que les baselines disponibles (PowerCLI) in French Discussions</title>
    <link>https://communities.vmware.com/t5/French-Discussions/R%C3%A9cup%C3%A9rer-la-version-ESXi-ainsi-que-les-baselines-disponibles/m-p/2976480#M2735</link>
    <description>&lt;P&gt;Bonjour,&lt;/P&gt;&lt;P&gt;Mon but est d'obtenir la version actuelle d'ESXs et d'afficher lorsque des mises à jours (patch baselines) sont disponibles.&lt;/P&gt;&lt;P&gt;J'ai essayé d'envoyer une requête à la méthode &lt;A href="https://developer.vmware.com/apis/vsphere-automation/latest/esx/api/esx/software/get/" target="_blank" rel="noopener"&gt;"ESX Get Software"&lt;/A&gt;&amp;nbsp; en utilisant ce bout de code powershell :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;$vCenter = (Get-Content "auth.txt")[0] #environnement de test
$username = (Get-Content "auth.txt")[1]
$password = (Get-Content "auth.txt")[2]

$usernameesx = (Get-Content "auth.txt")[1]
$passwordesx = (Get-Content "auth.txt")[2]

$credential = New-Object System.Management.Automation.PsCredential($username,($password | ConvertTo-SecureString -AsPlainText -Force))  

$auth = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($credential.UserName+':'+$credential.GetNetworkCredential().Password))  
$head = @{  
  Authorization = "Basic $auth"  
}  

#Disable certs
add-type @"
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    public class TrustAllCertsPolicy : ICertificatePolicy {
        public bool CheckValidationResult(
            ServicePoint srvPoint, X509Certificate certificate,
            WebRequest request, int certificateProblem) {
            return true;
        }
    }
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

$a = Invoke-WebRequest -Uri "https://$vCenter/rest/com/vmware/cis/session" -Method Post -Headers $head -UseBasicParsing
$token = ConvertFrom-Json $a.Content | Select-Object -ExpandProperty Value  
$session = @{'vmware-api-session-id' = $token}  

$vamiHostAPI = Invoke-WebRequest -Uri "https://$vCenter/api/vcenter/host" -Method Get -Headers $session -UseBasicParsing
$vamiHostList = ConvertFrom-Json $vamiHostAPI.Content

$HostNbr = 3
$HostSystem = @{
    'name' = $vamiHostList[$HostNbr].name
    'host' = $vamiHostList[$HostNbr].host
    'connection_state' = $vamiHostList[$HostNbr].connection_state
    'power_state' = $vamiHostList[$HostNbr].power_state
}

$Body = '{
    auth_type: "EXISTING",
    host: "$($HostSystem.host)"
}'

$Params = @{
	'Method' = "Get"
	'Uri' = "https://$vCenter/api/esx/software"
	'Body' = $Body
    'Headers' = $session
}
$vamiUpdateAPiUrl = Invoke-WebRequest @Params&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;Je m'y prend peut-être mal puisque j’obtiens une erreur (400) Demande incorrecte sans plus de précision. Mais je n'ai pas l'impression de m'y prendre mal.&lt;/P&gt;&lt;P&gt;Du coup, je me suis penché vers l'API PowerCLI, j'ai installé la dernière version et utilisé ce bout de code basé sur les exemples fournis par VMware :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;$HostsSoftwareHostCredentials = Initialize-HostsSoftwareHostCredentials -HostName $($HostSystem.host) -UserName $usernameesx -Password $passwordesx
Set-PowerCLIConfiguration -InvalidCertificateAction ignore
Connect-VIServer -Server $vCenter -User $username -Password $password
Invoke-GetSoftware -AuthType EXISTING -Host $($HostSystem.host)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Et j'obtiens cette étrange erreur :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;Invoke-vSphereApiClient : InvocationException: [INVALID_ARGUMENT]
Unsupported property with name: auth_type.
 ---&amp;gt; System.Net.WebException: Le serveur distant a retourné une erreur : (400) Demande incorrecte.
   à Microsoft.PowerShell.Commands.WebRequestPSCmdlet.GetResponse(WebRequest request)
   à Microsoft.PowerShell.Commands.WebRequestPSCmdlet.ProcessRecord()
   --- Fin de la trace de la pile d'exception interne ---
Au caractère C:\Program Files\WindowsPowerShell\Modules\VMware.Sdk.vSphere.Esx.Hosts\1.0.104.18678708\Api\SoftwareApi.ps1:257 : 33
+                 $invokeResult = Invoke-vSphereApiClient @invokeParams
+                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Invoke-vSphereApiClient&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ne soyez pas étonné par la version, j'obtenais la même erreur avec la toute dernière version alors j'ai rollback tous les modules vers une version de 2021, et ça n'a rien changé.&lt;/P&gt;</description>
    <pubDate>Mon, 10 Jul 2023 09:33:41 GMT</pubDate>
    <dc:creator>AntoineBrtt</dc:creator>
    <dc:date>2023-07-10T09:33:41Z</dc:date>
    <item>
      <title>Récupérer la version ESXi ainsi que les baselines disponibles (PowerCLI)</title>
      <link>https://communities.vmware.com/t5/French-Discussions/R%C3%A9cup%C3%A9rer-la-version-ESXi-ainsi-que-les-baselines-disponibles/m-p/2976480#M2735</link>
      <description>&lt;P&gt;Bonjour,&lt;/P&gt;&lt;P&gt;Mon but est d'obtenir la version actuelle d'ESXs et d'afficher lorsque des mises à jours (patch baselines) sont disponibles.&lt;/P&gt;&lt;P&gt;J'ai essayé d'envoyer une requête à la méthode &lt;A href="https://developer.vmware.com/apis/vsphere-automation/latest/esx/api/esx/software/get/" target="_blank" rel="noopener"&gt;"ESX Get Software"&lt;/A&gt;&amp;nbsp; en utilisant ce bout de code powershell :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;$vCenter = (Get-Content "auth.txt")[0] #environnement de test
$username = (Get-Content "auth.txt")[1]
$password = (Get-Content "auth.txt")[2]

$usernameesx = (Get-Content "auth.txt")[1]
$passwordesx = (Get-Content "auth.txt")[2]

$credential = New-Object System.Management.Automation.PsCredential($username,($password | ConvertTo-SecureString -AsPlainText -Force))  

$auth = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($credential.UserName+':'+$credential.GetNetworkCredential().Password))  
$head = @{  
  Authorization = "Basic $auth"  
}  

#Disable certs
add-type @"
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    public class TrustAllCertsPolicy : ICertificatePolicy {
        public bool CheckValidationResult(
            ServicePoint srvPoint, X509Certificate certificate,
            WebRequest request, int certificateProblem) {
            return true;
        }
    }
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

$a = Invoke-WebRequest -Uri "https://$vCenter/rest/com/vmware/cis/session" -Method Post -Headers $head -UseBasicParsing
$token = ConvertFrom-Json $a.Content | Select-Object -ExpandProperty Value  
$session = @{'vmware-api-session-id' = $token}  

$vamiHostAPI = Invoke-WebRequest -Uri "https://$vCenter/api/vcenter/host" -Method Get -Headers $session -UseBasicParsing
$vamiHostList = ConvertFrom-Json $vamiHostAPI.Content

$HostNbr = 3
$HostSystem = @{
    'name' = $vamiHostList[$HostNbr].name
    'host' = $vamiHostList[$HostNbr].host
    'connection_state' = $vamiHostList[$HostNbr].connection_state
    'power_state' = $vamiHostList[$HostNbr].power_state
}

$Body = '{
    auth_type: "EXISTING",
    host: "$($HostSystem.host)"
}'

$Params = @{
	'Method' = "Get"
	'Uri' = "https://$vCenter/api/esx/software"
	'Body' = $Body
    'Headers' = $session
}
$vamiUpdateAPiUrl = Invoke-WebRequest @Params&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;Je m'y prend peut-être mal puisque j’obtiens une erreur (400) Demande incorrecte sans plus de précision. Mais je n'ai pas l'impression de m'y prendre mal.&lt;/P&gt;&lt;P&gt;Du coup, je me suis penché vers l'API PowerCLI, j'ai installé la dernière version et utilisé ce bout de code basé sur les exemples fournis par VMware :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;$HostsSoftwareHostCredentials = Initialize-HostsSoftwareHostCredentials -HostName $($HostSystem.host) -UserName $usernameesx -Password $passwordesx
Set-PowerCLIConfiguration -InvalidCertificateAction ignore
Connect-VIServer -Server $vCenter -User $username -Password $password
Invoke-GetSoftware -AuthType EXISTING -Host $($HostSystem.host)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Et j'obtiens cette étrange erreur :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;Invoke-vSphereApiClient : InvocationException: [INVALID_ARGUMENT]
Unsupported property with name: auth_type.
 ---&amp;gt; System.Net.WebException: Le serveur distant a retourné une erreur : (400) Demande incorrecte.
   à Microsoft.PowerShell.Commands.WebRequestPSCmdlet.GetResponse(WebRequest request)
   à Microsoft.PowerShell.Commands.WebRequestPSCmdlet.ProcessRecord()
   --- Fin de la trace de la pile d'exception interne ---
Au caractère C:\Program Files\WindowsPowerShell\Modules\VMware.Sdk.vSphere.Esx.Hosts\1.0.104.18678708\Api\SoftwareApi.ps1:257 : 33
+                 $invokeResult = Invoke-vSphereApiClient @invokeParams
+                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Invoke-vSphereApiClient&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ne soyez pas étonné par la version, j'obtenais la même erreur avec la toute dernière version alors j'ai rollback tous les modules vers une version de 2021, et ça n'a rien changé.&lt;/P&gt;</description>
      <pubDate>Mon, 10 Jul 2023 09:33:41 GMT</pubDate>
      <guid>https://communities.vmware.com/t5/French-Discussions/R%C3%A9cup%C3%A9rer-la-version-ESXi-ainsi-que-les-baselines-disponibles/m-p/2976480#M2735</guid>
      <dc:creator>AntoineBrtt</dc:creator>
      <dc:date>2023-07-10T09:33:41Z</dc:date>
    </item>
  </channel>
</rss>

