由于打算更新虚拟化集群系统6.7u3至7.0,但无奈7.0网上并未寻找到有封装好的镜像,只能自己手动操作进行封装
官方建议使用vSphere ESXI Image Builder,但使用过于复杂,不过有第三方封装工具:ESXi-Customizer,github地址
驱动程序下载地址:https://vibsdepot.v-front.de/wiki/index.php/Welcome,选择对应驱动在Direct Download links页面进行下载
镜像下载地址:7.0,6.7,官网地址

2.8.0 ESXi-Customizer-PS

#############################################################################################################################
#
# ESXi-Customizer-PS.ps1 - a script to build a customized ESXi installation ISO using ImageBuilder
#
# Version:       2.8.0
# Author:        Andreas Peetz (ESXi-Customizer-PS@v-front.de)
# Info/Tutorial: https://esxi-customizer-ps.v-front.de/
#
# Contributors:  Alex Lopez, Andre Pett
#
# License:
#
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# A copy of the GNU General Public License is available at http://www.gnu.org/licenses/.
#
#############################################################################################################################
param(
[string]$iZip = "",
[string]$pkgDir = "",
[string]$outDir = $(Split-Path $MyInvocation.MyCommand.Path),
[string]$ipname = "",
[string]$ipvendor = "",
[string]$ipdesc = "",
[switch]$vft = $false,
[string[]]$dpt = @(),
[string[]]$load = @(),
[string[]]$remove = @(),
[switch]$test = $false,
[switch]$sip = $false,
[switch]$nsc = $false,
[switch]$help = $false,
[switch]$ozip = $false,
[switch]$v50 = $false,
[switch]$v51 = $false,
[switch]$v55 = $false,
[switch]$v60 = $false,
[switch]$v65 = $false,
[switch]$v67 = $false,
[switch]$v70 = $false,
[switch]$update = $false,
[string]$pZip = "",
[string]$log = ($env:TEMP + "\ESXi-Customizer-PS-" + $PID + ".log")
)
# Constants
$ScriptName = "ESXi-Customizer-PS"
$ScriptVersion = "2.8.0"
$ScriptURL = "https://ESXi-Customizer-PS.v-front.de"
$AccLevel = @{"VMwareCertified" = 1; "VMwareAccepted" = 2; "PartnerSupported" = 3; "CommunitySupported" = 4}
# Online depot URLs
$vmwdepotURL = "https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml"
$vftdepotURL = "https://vibsdepot.v-front.de/"
# Function to update/add VIB package
function AddVIB2Profile($vib) {
$AddVersion = $vib.Version
$ExVersion = ($MyProfile.VibList | where { $_.Name -eq $vib.Name }).Version
# Check for vib replacements
$ExName = ""
if ($ExVersion -eq $null) {
foreach ($replaces in $vib.replaces) {
$ExVib = $MyProfile.VibList | where { $_.Name -eq $replaces }
if ($ExVib -ne $null) {
$ExName = $ExVib.Name + " "
$ExVersion = $ExVib.Version
break
}
}
}
if ($AccLevel[$vib.AcceptanceLevel.ToString()] -gt $AccLevel[$MyProfile.AcceptanceLevel.ToString()]) {
write-host -F Yellow -nonewline (" [New AcceptanceLevel: " + $vib.AcceptanceLevel + "]")
$MyProfile.AcceptanceLevel = $vib.AcceptanceLevel
}
If ($MyProfile.VibList -contains $vib) {
write-host -F Yellow " [IGNORED, already added]"
} else {
Add-EsxSoftwarePackage -SoftwarePackage $vib -Imageprofile $MyProfile -force -ErrorAction SilentlyContinue | Out-Null
if ($?) {
if ($ExVersion -eq $null) {
write-host -F Green " [OK, added]"
} else {
write-host -F Green (" [OK, replaced " + $ExName + $ExVersion + "]")
}
} else {
write-host -F Red " [FAILED, invalid package?]"
}
}
}
# Function to test if entered string is numeric
function isNumeric ($x) {
$x2 = 0
$isNum = [System.Int32]::TryParse($x, [ref]$x2)
return $isNum
}
# Clean-up function
function cleanup() {
Stop-Transcript | Out-Null
if ($DefaultSoftwaredepots) { Remove-EsxSoftwaredepot $DefaultSoftwaredepots }
}
# Write info and help if requested
write-host ("`nThis is " + $ScriptName + " Version " + $ScriptVersion + " (visit " + $ScriptURL + " for more information!)")
if ($help) {
write-host "`nUsage:"
write-host "  ESXi-Customizer-PS [-help] |  [-izip <bundle> [-update]] [-sip] [-v70|-v67|-v65|-v60|-v55|-v51|-v50]"
write-host "                                [-ozip] [-pkgDir <dir>] [-outDir <dir>] [-vft] [-dpt depot1[,...]]"
write-host "                                [-load vib1[,...]] [-remove vib1[,...]] [-log <file>] [-ipname <name>]"
write-host "                                [-ipdesc <desc>] [-ipvendor <vendor>] [-nsc] [-test]"
write-host "`nOptional parameters:"
write-host "   -help              : display this help"
write-host "   -izip <bundle>     : use the VMware Offline bundle <bundle> as input instead of the Online depot"
write-host "   -update            : only with -izip, updates a local bundle with an ESXi patch from the VMware Online depot,"
write-host "                        combine this with the matching ESXi version selection switch"
write-host "   -pzip              : use an Offline patch bundle instead of the Online depot with -update."
write-host "   -pkgDir <dir>      : local directory of Offline bundles and/or VIB files to add (if any, no default)"
write-host "   -ozip              : output an Offline bundle instead of an installation ISO"
write-host "   -outDir <dir>      : directory to store the customized ISO or Offline bundle (the default is the"
write-host "                        script directory. If specified the log file will also be moved here.)"
write-host "   -vft               : connect the V-Front Online depot"
write-host "   -dpt depot1[,...]  : connect additional Online depots by URL or local Offline bundles by file name"
write-host "   -load vib1[,...]   : load additional packages from connected depots or Offline bundles"
write-host "   -remove vib1[,...] : remove named VIB packages from the custom Imageprofile"
write-host "   -sip               : select an Imageprofile from the current list"
write-host "                        (default = auto-select latest available standard profile)"
write-host "   -v70 |"
write-host "   -v67 | -v65 | -v60 |"
write-host "   -v55 | -v51 | -v50 : Use only ESXi 7.0/6.7/6.5/6.0/5.5/5.1/5.0 Imageprofiles as input, ignore other versions"
write-host "   -nsc               : use -NoSignatureCheck with export"
write-host "   -log <file>        : Use custom log file <file>"
write-host "   -ipname <name>"
write-host "   -ipdesc <desc>"
write-host "   -ipvendor <vendor> : provide a name, description and/or vendor for the customized"
write-host "                        Imageprofile (the default is derived from the cloned input Imageprofile)"
write-host "   -test              : skip package download and image build (for testing)`n"
exit
} else {
write-host "(Call with -help for instructions)"
if (!($PSBoundParameters.ContainsKey('log')) -and $PSBoundParameters.ContainsKey('outDir')) {
write-host ("`nTemporarily logging to " + $log + " ...")
} else {
write-host ("`nLogging to " + $log + " ...")
}
# Stop active transcript
try { Stop-Transcript | out-null } catch {}
# Start own transcript
try { Start-Transcript -Path $log -Force -Confirm:$false | Out-Null } catch {
write-host -F Red "`nFATAL ERROR: Log file cannot be opened. Bad file path or missing permission?`n"
exit
}
}
# The main try ...
$isModule = @{}
try {
# Check for and load required modules/snapins
foreach ($comp in "VMware.VimAutomation.Core", "VMware.ImageBuilder") {
if (Get-Module -ListAvailable -Name $comp -ErrorAction:SilentlyContinue) {
$isModule[$comp] = $true
if (!(Get-Module -Name $comp -ErrorAction:SilentlyContinue)) {
if (!(Import-Module -PassThru -Name $comp -ErrorAction:SilentlyContinue)) {
write-host -F Red "`nFATAL ERROR: Failed to import the $comp module!`n"
exit
}
}
} else {
$isModule[$comp] = $false
if (Get-PSSnapin -Registered -Name $comp -ErrorAction:SilentlyContinue) {
if (!(Get-PSSnapin -Name $comp -ErrorAction:SilentlyContinue)) {
if (!(Add-PSSnapin -PassThru -Name $comp -ErrorAction:SilentlyContinue)) {
write-host -F Red "`nFATAL ERROR: Failed to add the $comp snap-in!`n"
exit
}
}
} else {
write-host -F Red "`nFATAL ERROR: $comp is not available as a module or snap-in! It looks like there is no compatible version of PowerCLI installed!`n"
exit
}
}
}
# Parameter sanity check
if ( ($v50 -and ($v51 -or $v55 -or $v60 -or $v65 -or $v67 -or $v70)) -or ($v51 -and ($v55 -or $v60 -or $v65 -or $v67 -or $v70)) -or ($v55 -and ($v60 -or $v65 -or $v67 -or $v70)) -or ($v60 -and ($v65 -or $v67 -or $70)) -or ($v65 -and ($v67 -or $v70)) -or ($v70 -and ($v51 -or $v55 -or $v60 -or $v65 -or $v67)) ) {
write-host -F Yellow "`nWARNING: Multiple ESXi versions specified. Highest version will take precedence!"
}
if ($update -and ($izip -eq "")) {
write-host -F Red "`nFATAL ERROR: -update requires -izip!`n"
exit
}
# Check PowerShell and PowerCLI version
if (!(Test-Path variable:PSVersionTable)) {
write-host -F Red "`nFATAL ERROR: This script requires at least PowerShell version 2.0!`n"
exit
}
$psv = $PSVersionTable.PSVersion | select Major,Minor
if ($isModule["VMware.VimAutomation.Core"]) {
$pcmv = (Get-Module VMware.PowerCLI).Version | select Major,Minor,Build,Revision
write-host -F Yellow ("`nRunning with PowerShell version " + $psv.Major + "." + $psv.Minor + " and VMware PowerCLI version " + $pcmv.Major + "." + $pcmv.Minor + "." + $pcmv.Build + " build " + $pcmv.Revision )
} else {
$pcv = Get-PowerCLIVersion | select major,minor,UserFriendlyVersion
write-host -F Yellow ("`nRunning with PowerShell version " + $psv.Major + "." + $psv.Minor + " and " + $pcv.UserFriendlyVersion)
if ( ($pcv.major -lt 5) -or (($pcv.major -eq 5) -and ($pcv.minor -eq 0)) ) {
write-host -F Red "`nFATAL ERROR: This script requires at least PowerCLI version 5.1 !`n"
exit
}
}
if ($update) {
# Try to add Offline bundle specified by -izip
write-host -nonewline "`nAdding Base Offline bundle $izip (to be updated)..."
if ($upddepot = Add-EsxSoftwaredepot $izip) {
write-host -F Green " [OK]"
} else {
write-host -F Red "`nFATAL ERROR: Cannot add Base Offline bundle!`n"
exit
}
if (!($CloneIP = Get-EsxImageprofile -Softwaredepot $upddepot)) {
write-host -F Red "`nFATAL ERROR: No Imageprofiles found in Base Offline bundle!`n"
exit
}
if ($CloneIP -is [system.array]) {
# Input Offline bundle includes multiple Imageprofiles. Pick only the latest standard profile:
write-host -F Yellow "Warning: Input Offline Bundle contains multiple Imageprofiles. Will pick the latest standard profile!"
$CloneIP = @( $CloneIP | Sort-Object -Descending -Property @{Expression={$_.Name.Substring(0,10)}},@{Expression={$_.CreationTime.Date}},Name )[0]
}
}
if ($update -and $pzip -ne "") {
$vmwdepotURL = $pZip
}
if (($izip -eq "") -or $update) {
# Connect the VMware ESXi base depot
write-host -nonewline "`nConnecting the VMware ESXi Software depot ..."
if ($basedepot = Add-EsxSoftwaredepot $vmwdepotURL) {
write-host -F Green " [OK]"
} else {
write-host -F Red "`nFATAL ERROR: Cannot add VMware ESXi Online depot. Please check your Internet connectivity and/or proxy settings!`n"
exit
}
} else {
# Try to add Offline bundle specified by -izip
write-host -nonewline "`nAdding base Offline bundle $izip ..."
if ($basedepot = Add-EsxSoftwaredepot $izip) {
write-host -F Green " [OK]"
} else {
write-host -F Red "`nFATAL ERROR: Cannot add VMware base Offline bundle!`n"
exit
}
}
if ($vft) {
# Connect the V-Front Online depot
write-host -nonewline "`nConnecting the V-Front Online depot ..."
if ($vftdepot = Add-EsxSoftwaredepot $vftdepotURL) {
write-host -F Green " [OK]"
} else {
write-host -F Red "`nFATAL ERROR: Cannot add the V-Front Online depot. Please check your internet connectivity and/or proxy settings!`n"
exit
}
}
if ($dpt -ne @()) {
# Connect additional depots (Online depot or Offline bundle)
$AddDpt = @()
for ($i=0; $i -lt $dpt.Length; $i++ ) {
write-host -nonewline ("`nConnecting additional depot " + $dpt[$i] + " ...")
if ($AddDpt += Add-EsxSoftwaredepot $dpt[$i]) {
write-host -F Green " [OK]"
} else {
write-host -F Red "`nFATAL ERROR: Cannot add Online depot or Offline bundle. In case of Online depot check your Internet"
write-host -F Red "connectivity and/or proxy settings! In case of Offline bundle check file name, format and permissions!`n"
exit
}
}
}
write-host -NoNewLine "`nGetting Imageprofiles, please wait ..."
$iplist = @()
if ($iZip -and !($update)) {
Get-EsxImageprofile -Softwaredepot $basedepot | foreach { $iplist += $_ }
} else {
if ($v70) {
Get-EsxImageprofile "ESXi-7.0*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
} else {
if ($v67) {
Get-EsxImageprofile "ESXi-6.7*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
} else {
if ($v65) {
Get-EsxImageprofile "ESXi-6.5*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
} else {
if ($v60) {
Get-EsxImageprofile "ESXi-6.0*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
} else {
if ($v55) {
Get-EsxImageprofile "ESXi-5.5*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
} else {
if ($v51) {
Get-EsxImageprofile "ESXi-5.1*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
} else {
if ($v50) {
Get-EsxImageprofile "ESXi-5.0*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
} else {
# Workaround for http://kb.vmware.com/kb/2089217
Get-EsxImageprofile "ESXi-5.0*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
Get-EsxImageprofile "ESXi-5.1*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
Get-EsxImageprofile "ESXi-5.5*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
Get-EsxImageprofile "ESXi-6.0*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
Get-EsxImageprofile "ESXi-6.5*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
Get-EsxImageprofile "ESXi-6.7*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
Get-EsxImageprofile "ESXi-7.0*" -Softwaredepot $basedepot | foreach { $iplist += $_ }
}
}
}
}
}
}
}
}
if ($iplist.Length -eq 0) {
write-host -F Red " [FAILED]`n`nFATAL ERROR: No valid Imageprofile(s) found!"
if ($iZip) {
write-host -F Red "The input file is probably not a full ESXi base bundle.`n"
}
exit
} else {
write-host -F Green " [OK]"
$iplist = @( $iplist | Sort-Object -Descending -Property @{Expression={$_.Name.Substring(0,10)}},@{Expression={$_.CreationTime.Date}},Name )
}
# if -sip then display menu of available image profiles ...
if ($sip) {
if ($update) {
write-host "`nSelect Imageprofile to use for update:"
} else {
write-host "`nSelect Base Imageprofile:"
}
write-host "-------------------------------------------"
for ($i=0; $i -lt $iplist.Length; $i++ ) {
write-host ($i+1): $iplist[$i].Name
}
write-host "-------------------------------------------"
do {
$sel = read-host "Enter selection"
if (isNumeric $sel) {
if (([int]$sel -lt 1) -or ([int]$sel -gt $iplist.Length)) { $sel = $null }
} else {
$sel = $null
}
} until ($sel)
$idx = [int]$sel-1
} else {
$idx = 0
}
if ($update) {
$updIP = $iplist[$idx]
} else {
$CloneIP = $iplist[$idx]
}
write-host ("`nUsing Imageprofile " + $CloneIP.Name + " ...")
write-host ("(Dated " + $CloneIP.CreationTime + ", AcceptanceLevel: " + $CloneIP.AcceptanceLevel + ",")
write-host ($CloneIP.Description + ")")
# If customization is required ...
if ( ($pkgDir -ne "") -or $update -or ($load -ne @()) -or ($remove -ne @()) ) {
# Create your own Imageprofile
if ($ipname -eq "") { $ipname = $CloneIP.Name + "-customized" }
if ($ipvendor -eq "") { $ipvendor = $CloneIP.Vendor }
if ($ipdesc -eq "") { $ipdesc = $CloneIP.Description + " (customized)" }
$MyProfile = New-EsxImageprofile -CloneProfile $CloneIP -Vendor $ipvendor -Name $ipname -Description $ipdesc
# Update from Online depot profile
if ($update) {
write-host ("`nUpdating with the VMware Imageprofile " + $UpdIP.Name + " ...")
write-host ("(Dated " + $UpdIP.CreationTime + ", AcceptanceLevel: " + $UpdIP.AcceptanceLevel + ",")
write-host ($UpdIP.Description + ")")
$diff = Compare-EsxImageprofile $MyProfile $UpdIP
$diff.UpgradeFromRef | foreach {
$uguid = $_
$uvib = Get-EsxSoftwarePackage | where { $_.Guid -eq $uguid }
write-host -nonewline "   Add VIB" $uvib.Name $uvib.Version
AddVIB2Profile $uvib
}
}
# Loop over Offline bundles and VIB files
if ($pkgDir -ne "") {
write-host "`nLoading Offline bundles and VIB files from" $pkgDir ...
foreach ($obundle in Get-Item $pkgDir\*.zip) {
write-host -nonewline "   Loading" $obundle ...
if ($ob = Add-EsxSoftwaredepot $obundle -ErrorAction SilentlyContinue) {
write-host -F Green " [OK]"
$ob | Get-EsxSoftwarePackage | foreach {
write-host -nonewline "      Add VIB" $_.Name $_.Version
AddVIB2Profile $_
}
} else {
write-host -F Red " [FAILED]`n      Probably not a valid Offline bundle, ignoring."
}
}
foreach ($vibFile in Get-Item $pkgDir\*.vib) {
write-host -nonewline "   Loading" $vibFile ...
try {
$vib1 = Get-EsxSoftwarePackage -PackageUrl $vibFile -ErrorAction SilentlyContinue
write-host -F Green " [OK]"
write-host -nonewline "      Add VIB" $vib1.Name $vib1.Version
AddVIB2Profile $vib1
} catch {
write-host -F Red " [FAILED]`n      Probably not a valid VIB file, ignoring."
}
}
}
# Load additional packages from Online depots or Offline bundles
if ($load -ne @()) {
write-host "`nLoad additional VIBs from Online depots ..."
for ($i=0; $i -lt $load.Length; $i++ ) {
if ($ovib = Get-ESXSoftwarePackage $load[$i] -Newest) {
write-host -nonewline "   Add VIB" $ovib.Name $ovib.Version
AddVIB2Profile $ovib
} else {
write-host -F Red "   [ERROR] Cannot find VIB named" $load[$i] "!"
}
}
}
# Remove selected VIBs
if ($remove -ne @()) {
write-host "`nRemove selected VIBs from Imageprofile ..."
for ($i=0; $i -lt $remove.Length; $i++ ) {
write-host -nonewline "      Remove VIB" $remove[$i]
try {
Remove-EsxSoftwarePackage -ImageProfile $MyProfile -SoftwarePackage $remove[$i] | Out-Null
write-host -F Green " [OK]"
} catch {
write-host -F Red " [FAILED]`n      VIB does probably not exist or cannot be removed without breaking dependencies."
}
}
}
} else {
$MyProfile = $CloneIP
}
# Build the export command:
$cmd = "Export-EsxImageprofile -Imageprofile " + "`'" + $MyProfile.Name + "`'"
if ($ozip) {
$outFile = "`'" + $outDir + "\" + $MyProfile.Name + ".zip" + "`'"
$cmd = $cmd + " -ExportTobundle"
} else {
$outFile = "`'" + $outDir + "\" + $MyProfile.Name + ".iso" + "`'"
$cmd = $cmd + " -ExportToISO"
}
$cmd = $cmd + " -FilePath " + $outFile
if ($nsc) { $cmd = $cmd + " -NoSignatureCheck" }
$cmd = $cmd + " -Force"
# Run the export:
write-host -nonewline ("`nExporting the Imageprofile to " + $outFile + ". Please be patient ...")
if ($test) {
write-host -F Yellow " [Skipped]"
} else {
write-host "`n"
Invoke-Expression $cmd
}
write-host -F Green "`nAll done.`n"
# The main catch ...
} catch {
write-host -F Red ("`n`nAn unexpected error occurred:`n" + $Error[0])
write-host -F Red ("`nIf requesting support please be sure to include the log file`n   " + $log + "`n`n")
# The main cleanup
} finally {
cleanup
if (!($PSBoundParameters.ContainsKey('log')) -and $PSBoundParameters.ContainsKey('outDir') -and ($outFile -like '*zip*')) {
$finalLog = ($outDir + "\" + $MyProfile.Name + ".zip" + "-" + (get-date -Format yyyyMMddHHmm) + ".log")
Move-Item $log $finalLog -force
write-host ("(Log file moved to " + $finalLog + ")`n")
} elseif (!($PSBoundParameters.ContainsKey('log')) -and $PSBoundParameters.ContainsKey('outDir') -and ($outFile -like '*iso*')) {
$finalLog = ($outDir + "\" + $MyProfile.Name + ".iso" + "-" + (Get-Date -Format yyyyMMddHHmm) + ".log")
Move-Item $log $finalLog -force
write-host ("(Log file moved to " + $finalLog + ")`n")
}
}

PowerShell修改

依赖安装

Install-Module -Name VMware.PowerCLI [-AllowClobber] [-Proxy http://ip:port]

PowerShell脚本策略修改

get-ExecutionPolicy
set-ExecutionPolicy RemoteSigned
get-ExecutionPolicy

封装命令:
以realtek 8168为例

.\ESXi-Customizer-PS.ps1 -izip .\VMware-ESXi-7.0.0-15843807-depot.zip -dpt .\net55-r8168-8.045a-napi-offline_bundle.zip -load net55-r8168
执行结果

This is ESXi-Customizer-PS Version 2.8.0 (visit https://ESXi-Customizer-PS.v-front.de for more information!)
(Call with -help for instructions)
Logging to C:\Users\kami\AppData\Local\Temp\ESXi-Customizer-PS-68.log ...
Running with PowerShell version 5.1 and VMware PowerCLI version .. build
Adding base Offline bundle .\VMware-ESXi-7.0.0-15843807-depot.zip ... [OK]
Connecting additional depot .\net55-r8168-8.045a-napi-offline_bundle.zip ... [OK]
Getting Imageprofiles, please wait ... [OK]
Using Imageprofile ESXi-7.0.0-15843807-standard ...
(Dated 03/16/2020 10:48:54, AcceptanceLevel: PartnerSupported,
The general availability release of VMware ESXi Server 7.0.0 brings whole new levels of virtualization performance to datacenters and enterprises.)
Load additional VIBs from Online depots ...
Add VIB net55-r8168 8.045a-napi [New AcceptanceLevel: CommunitySupported] [OK, added]
Exporting the Imageprofile to 'C:\Users\kami\Desktop\ESXI\ESXi-7.0.0-15843807-standard-customized.iso'. Please be patient ...
警告: The image profile fails validation.  The ISO / Offline Bundle will still be generated but may contain errors and
may not boot or be functional.  Errors:
警告:   VIB Realtek_bootbank_net55-r8168_8.045a-napi requires com.vmware.driverAPI-9.2.2.0, but the requirement cannot
be satisfied within the ImageProfile.
警告:   VIB Realtek_bootbank_net55-r8168_8.045a-napi requires vmkapi_2_2_0_0, but the requirement cannot be satisfied
within the ImageProfile.
All done.

如果是多个网卡驱动,将驱动放到 C:\xxx\xx 文件夹下.\ESXi-Customizer-PS.ps1 -izip .\VMware-ESXi-7.0.0-15843807-depot.zip -pkgDir D:\xxx\xx
如果是全局挂代理,可以直接在线安装.\ESXi-Customizer-PS.ps1 -v70 -vft -load net55-r8168
参考资料:https://anjia0532.github.io/2020/06/19/vsphere-7-custom-network-adapter/?utm_source=tuicool&utm_medium=referral
ps:虽然能打包成功,但部分驱动还是不可用的,譬如示例的realtek 8168

vSphere7.0添加第三方驱动相关推荐

  1. ThinkPad-T470安装Win7添加USB3.0和NVMe驱动的问题

    ##主要解决办法 本文以[教程]如何给Win7安装镜像注入usb3.0和nvme驱动方法为主,然后根据OCZ RD400 NVMe 驱动 (支持东芝 XG3 NVMe) 更新所提供的硬盘型号信息,做了 ...

  2. 高通平台power_supply 框架下添加第三方充电IC的驱动方法

    1.power_supply电源框架介绍: power supply framework在kernel/drivers/power/下.内核抽象出来power supply子系统为驱动提供了统一的框架 ...

  3. maven 加入第三方库_maven 手动添加第三方的jar包

    maven项目手动引入第三方jar包项目打包 项目有时候需要依赖第三方jar包,一般会去maven仓库寻找坐标,但有时候maven仓库并没有提供,我们需要手动下载jar包并导入项目. maven库中并 ...

  4. 正确加载MySQL驱动的语句_使用数据库客户端工具Oracle SQL Developer加载第三方驱动连接mysql的方法...

    用Oracle SQL Developer时遇到no ocijdbc11 in java.library.path怎么办 不是配置环境变量,而是去选项里面,添加数据库的驱动 jdbc的驱动没有在cla ...

  5. 【SpringBoot - 整合并操作Oracle数据库教程(手动添加ojdbc驱动)】

    由于 Oracle 授权问题,Maven 中央仓库不提供 Oracle JDBC driver.Spring Boot 项目如果需要连接 Oracle 数据库,我们必须自行下载相应版本的 Oracle ...

  6. docker添加jar包_Maven系列教材 (七)- 如何添加第三方jar包

    Maven系列教材 (七)- 如何添加第三方jar包 步骤1:Maven项目用到第三方jar步骤2:修改App步骤3:给maven项目添加jar步骤4:保存再执行步骤5:重建本地仓库 步骤 1 : M ...

  7. Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...

    一,实例:新建了一个Maven项目,在eclipse中通过 build path –> configure path-.将依赖包添加到工程中后,eclipse不报错了.但是用Maven命令 mv ...

  8. springboot中如何添加第三方的jar包或者说如何配置本地jar

    首先推荐博客: spring-boot-maven-plugin 安装本地jar 包 http://www.cnblogs.com/acm-bingzi/p/mavenSpringBootPlugin ...

  9. esxi添加网卡驱动

    最近3215U安装ESXi 6.0,发现ESXi 6.0官方iso镜像中不含Intel I211网卡驱动 安装过程中会报错,找不到网卡: nfs41client failed to load No N ...

  10. java 手动编译打包_Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...

    一,实例:新建了一个Maven项目,在eclipse中通过 build path –> configure path-.将依赖包添加到工程中后,eclipse不报错了.但是用Maven命令 mv ...

最新文章

  1. Spring Boot 还能“内存泄露”?排它!
  2. Java NIO系列教程(六) Selector
  3. 反弹和补遗:再论Bjarne Stroustrup的基于对象的含义
  4. vss2005与vs2005绑定问题解决
  5. leetcode-C语言代码练习
  6. pcie协议_PCIE系统标准体系结构解读(一)
  7. ffmpeg 转码_小水谈转码---FFmpeg安装
  8. el-radio(自定义样式)获取选中label值 + 选中状态 + 拼接String + post提交 - 踩坑篇
  9. Redis详解(五)——Redis多实例
  10. 双网口设备 网关设置注意事项
  11. Windows 10 版本 1507 中的新 AppLocker 功能
  12. 基于Springboot的漫画之家管理系统
  13. 《Occlusion Aware Facial Expression RecognitionUsing CNN With Attention Mechanism》论文阅读(2019TIP)
  14. element 表格内显示图片
  15. leetcode 1-100 medium难度题目汇总
  16. 计算机三级网络技术笔记(选择题)
  17. STM32F4 DAC
  18. 便捷式备份系统并还原
  19. 「 神器 」资源管理神器Clover,风一样的效率
  20. 驾驶证计算机管理系统,驾驶证信息系统

热门文章

  1. SQL连接MYSQL出现对象名无效_在SQL数据库中创建视图为什么执行时显示对象名无效?...
  2. 人教版,北师大版,北京版和苏教版的四年级数学知识点对比(附视频)
  3. 半自动安装jieba分词库
  4. 野蛮生长过后,机器人产业“标准化”号角已吹响
  5. 用计算机表白我不喜欢你了,绝对看不懂的表白公式(用古文暗示我喜欢你的方式)...
  6. 大 学 十 年 励志
  7. mybatis/mybatis-plus 子查询实现 涉及到in、exist操作
  8. Mac软件推荐:Soulver原来这么好用
  9. wordpress主题框架之Thematic介绍
  10. 【2021 最新】100 道大厂大数据必考面试题+答案详解