For users running ESX 8.0 Update 3 releases prior to Update 3g, applying patches may result in a pre-check failure with a SHA-1 signature error due to memory exhaustion, as outlined in KB 433124. The knowledge base article also describes a resolution that involves increasing the memory limit for one of the ESX system resource pools by using localcli.
Since localcli is the local version of ESXCLI, the command must be executed directly on the ESX host, typically requiring SSH access. An alternative approach is to use the vSphere API, which exposes the ESX system resource pool configuration, which means we can use tools like PowerCLI. This allows the same workaround to be applied remotely without requiring SSH or direct access to the ESX host.
Before making any changes, we can retrieve the current values for the referenced ESX system resource pool (host/vim/vmvisor/settingsd-task-forks) and in KB, we are just interested in the memory allocation:
$resourcePoolKey = "host/vim/vmvisor/settingsd-task-forks"
$esxHost = "esx03.vcf.lab"
$vmhost = Get-VMhost $esxHost
$currentCpuAllocation = ($vmhost.ExtensionData.SystemResources.Child.Child.Child | where {$_.key -eq $resourcePoolKey}).config.CpuAllocation
$currentMemAllocation = ($vmhost.ExtensionData.SystemResources.Child.Child.Child | where {$_.key -eq $resourcePoolKey}).config.MemoryAllocation
Write-Host -ForegroundColor Cyan "ESX Host: $($esxHost)"
Write-Host -ForegroundColor Cyan "System RP: $($resourcePoolKey)"
Write-Host -ForegroundColor Yellow "`nCurrent CPU Allocation:"
$currentCpuAllocation
Write-Host -ForegroundColor Yellow "`nCurrent Memory Allocation:`n"
$currentMemAllocation
Write-Host

Once you have made a note of the original values, we can use the following snippet to update the memory values as defined per the KB.
$resourcePoolKey = "host/vim/vmvisor/settingsd-task-forks"
$esxHost = "esx03.vcf.lab"
$memoryLimit = 400
$memoryReservation = 0
$memoryOverhead = -1
$currentCpuAllocation = ($vmhost.ExtensionData.SystemResources.Child.Child.Child | where {$_.key -eq $resourcePoolKey}).config.CpuAllocation
$memSpec = New-Object VMware.Vim.ResourceAllocationInfo
$memSpec.Limit = $memoryLimit
$memSpec.reservation = $memoryReservation
$memSpec.overheadLimit = $memoryOverhead
$rscSpec = New-Object VMware.Vim.ResourceConfigSpec
$rscSpec.memoryAllocation = $memSpec
$rscSpec.cpuAllocation = $currentCpuAllocation
$spec = New-Object VMware.Vim.HostSystemResourceInfo
$spec.key = "host/vim/vmvisor/settingsd-task-forks"
$spec.config = $rscSpec
Write-Host -ForegroundColor Yellow "`nUpdating ESX System Resource Pool"
$vmhost.ExtensionData.UpdateSystemResources($spec)
Once the update has been successfully applied to desired ESX host, you can re-run the commands above to confirm the values have been updated and host reboot will be required as mentioned in KB article.
I will also provide this feedback in the KB with a reference to this blog post as another option to apply the workaround.
Thanks for the comment!