Yuav tsim lub foob pob hluav taws li cas rau PowerCLI scripts
Tsis ntev los sis tom qab, txhua tus neeg khiav dej num VMware tuaj rau automate cov haujlwm niaj hnub. Nws tag nrho pib nrog cov kab hais kom ua, tom qab ntawd los PowerShell lossis VMware PowerCLI.
Cia peb hais tias koj tau paub txog PowerShell me ntsis ntxiv dua li pib ISE thiab siv cov qauv cmdlets los ntawm cov qauv uas ua haujlwm vim "qee yam khawv koob". Thaum koj pib suav cov tshuab virtual hauv ntau pua, koj yuav pom tias cov ntawv sau uas pab tawm ntawm qhov me me khiav qeeb qeeb ntawm qhov loj.
Hauv cov ntaub ntawv hauv qab no, Runspace tsis muaj txiaj ntsig ntxiv lawm:
"Kuv tabtom sim sau ib tsab ntawv uas sau ntau cov ntaub ntawv los ntawm VM thiab sau cov ntaub ntawv tshiab thaum tsim nyog. Qhov teeb meem yog tias muaj ntau VMs, thiab 5-8 vib nas this yog siv rau ib lub tshuab. "
Ntawm no koj yuav xav tau Get-View, cia peb txav mus rau nws.
Qhov thib ob theem: Tau-Saib
Kom nkag siab tias yog vim li cas Get-View yog qhov tseem ceeb, nws tsim nyog nco ntsoov tias cmdlets ua haujlwm li cas.
Cmdlets xav tau kom yooj yim tau cov ntaub ntawv yam tsis tas yuav kawm API cov phau ntawv siv thiab rov tsim lub log tom ntej. Dab tsi hauv cov hnub qub coj ib puas lossis ob kab ntawm cov lej, PowerShell tso cai rau koj ua nrog ib qho lus txib. Peb them rau qhov yooj yim no nrog ceev. Tsis muaj khawv koob hauv cmdlets lawv tus kheej: tib tsab ntawv, tab sis nyob rau theem qis, sau los ntawm kev txawj txhais tes ntawm tus tswv los ntawm tshav ntuj Is Nrias teb.
Tam sim no, rau kev sib piv nrog Get-View, cia peb coj mus rau Get-VM cmdlet: nws nkag mus rau lub tshuab virtual thiab xa rov qab cov khoom sib xyaw, uas yog, nws txuas lwm yam khoom siv rau nws: VMHost, Datastore, thiab lwm yam.
Get-View nyob rau hauv nws qhov chaw tsis ntxiv dab tsi tsis tsim nyog rau cov khoom xa rov qab. Ntxiv mus, nws tso cai rau peb nruj me ntsis qhia cov ntaub ntawv peb xav tau, uas yuav ua rau cov khoom tso tawm yooj yim dua. Hauv Windows Server feem ntau thiab hauv Hyper-V tshwj xeeb, Get-WMIObject cmdlet yog ib qho analogue ncaj qha - lub tswv yim zoo ib yam.
Get-View tsis yooj yim rau kev ua haujlwm niaj hnub ntawm cov khoom taw tes. Tab sis thaum nws los txog ntau txhiab thiab kaum txhiab yam khoom, nws tsis muaj nqi.
Txhua yam yog yooj yim heev thiab meej. Nws tuaj yeem sau tau ob peb feeb nrog kev so kas fes. Ntsia rau ntawm qhov pom thiab nws ua tiav.
Tab sis cia peb ntsuas lub sijhawm:
2 feeb 47 vib nas this thaum ua yuav luag 10k VMs. Ib qho ntxiv yog qhov tsis muaj cov lim dej thiab qhov xav tau los txheeb xyuas cov txiaj ntsig tau. Obviously, tsab ntawv yuav tsum optimization.
Runspaces yog thawj tus tuaj rau kev cawm thaum koj xav tau ib txhij tau txais cov tswv cuab metrics los ntawm vCenter lossis xav tau txheej txheem kaum tawm txhiab khoom. Cia peb saib seb qhov kev coj ua no coj li cas.
Qhib thawj qhov ceev: PowerShell Runspaces
Thawj qhov uas los rau hauv lub siab rau tsab ntawv no yog ua kom lub voj tsis sib luag, tab sis nyob rau hauv cov kab sib txuas, sau tag nrho cov ntaub ntawv rau hauv ib qho khoom thiab lim nws.
You have modified the global:DefaultVIServer and global:DefaultVIServers system variables. This is not allowed. Please reset them to $null and reconnect to the vSphere server.
Txhawm rau daws qhov no, koj yuav tsum xub hla cov ntaub ntawv sib tham hauv cov kwj dej. Cia peb nco ntsoov tias PowerShell ua haujlwm nrog cov khoom uas tuaj yeem dhau los ua qhov ntsuas tsis yog rau ib qho haujlwm lossis rau ScriptBlock. Cia peb dhau qhov kev sib tham hauv daim ntawv ntawm cov khoom zoo li no, hla $ ntiaj teb:DefaultVIServers (Txuas-VIServer nrog tus yuam sij -NotDefault):
$ConnectionString = @()
foreach ($vCenter in $vCenters)
{
try {
$ConnectionString += Connect-VIServer -Server $vCenter -Credential $Credential -NotDefault -AllLinked -Force -ErrorAction stop -WarningAction SilentlyContinue -ErrorVariable er
}
catch {
if ($er.Message -like "*not part of a linked mode*")
{
try {
$ConnectionString += Connect-VIServer -Server $vCenter -Credential $Credential -NotDefault -Force -ErrorAction stop -WarningAction SilentlyContinue -ErrorVariable er
}
catch {
throw $_
}
}
else {
throw $_
}
}
}
Tam sim no cia peb siv ntau txoj hauv kev los ntawm Runspace Pools.
Lub algorithm yog raws li nram no:
Peb tau txais cov npe ntawm txhua tus VMs.
Nyob rau hauv parallel kwj peb tau cloud.uuid.
Peb sau cov ntaub ntawv los ntawm kwj mus rau hauv ib yam khoom.
Peb lim cov khoom los ntawm kev sib koom ua ke los ntawm tus nqi ntawm CloudUUID teb: cov uas muaj pes tsawg tus nqi tshwj xeeb ntau dua 1 yog VMs peb tab tom nrhiav.
Cia peb kawm seb qhov twg yog qhov tsis raug.
Ua ntej thiab qhov tseem ceeb, Get-VM cmdlet siv sijhawm ntev los ua.
Thib ob, Get-AdvancedOptions cmdlet siv sijhawm ntev dua los ua kom tiav.
Cia peb nrog tus thib ob ua ntej.
Get-AdvancedOptions yog qhov yooj yim rau ib tus neeg VM cov khoom, tab sis clumsy heev thaum ua haujlwm nrog ntau yam khoom. Peb tuaj yeem tau txais tib cov ntaub ntawv los ntawm lub tshuab virtual nws tus kheej (Get-VM). Nws tsuas yog faus zoo hauv cov khoom ExtensionData. Armed nrog lim, peb ua kom cov txheej txheem kom tau txais cov ntaub ntawv tsim nyog.
Nrog me ntsis txav ntawm tes qhov no yog:
VM | Get-AdvancedSetting -Name Cloud.uuid -Server $ConnectionString | Select-Object @{N="VMName";E={$_.Entity.Name}},@{N="CloudUUID";E={$_.Value}},@{N="PowerState";E={$_.Entity.PowerState}}
Cov zis yog tib yam li Get-AdvancedOptions, tab sis nws ua haujlwm ntau zaus.
Tam sim no mus Get-VM. Nws tsis nrawm vim nws cuam tshuam nrog cov khoom siv. Ib lo lus nug tshwm sim: vim li cas peb thiaj li xav tau cov ntaub ntawv ntxiv thiab PSObject monstrous hauv qhov no, thaum peb tsuas yog xav tau lub npe ntawm VM, nws lub xeev thiab tus nqi ntawm tus cwj pwm tsis zoo?
Tsis tas li ntawd, qhov teeb meem nyob rau hauv daim ntawv ntawm Get-AdvancedOptions tau raug tshem tawm ntawm tsab ntawv. Siv Runspace Pools tam sim no zoo li overkill vim tsis muaj qhov xav tau los ua kom sib luag ua haujlwm qeeb hla squat threads thaum muab kev sib kho. Cov cuab yeej zoo, tab sis tsis yog rau rooj plaub no.
Cia peb saib ntawm qhov tso zis ntawm ExtensionData: nws tsis muaj dab tsi ntau dua li Get-View khoom.
Cia peb hu rau cov txheej txheem qub ntawm PowerShell masters: ib kab siv cov ntxaij lim dej, sorting thiab pab pawg. Tag nrho cov kev ntshai yav dhau los yog elegantly vau rau hauv ib kab thiab tua nyob rau hauv ib zaug: