Tinene kuti mwaphunzira PowerShell patsogolo pang'ono kuposa kuyambitsa ISE ndikugwiritsa ntchito ma cmdlets wamba kuchokera kuma module omwe amagwira ntchito chifukwa cha "matsenga amtundu wina". Mukayamba kuwerengera makina pafupifupi mazana, mupeza kuti zolemba zomwe zimathandizira pang'ono zimayenda pang'onopang'ono pamlingo waukulu.
Munthawi imeneyi, zida za 2 zithandizira:
PowerShell Runspaces - njira yomwe imakulolani kuti mufanane ndi kuchitidwa kwa njira mu ulusi wosiyana;
Pezani-Mawonedwe - ntchito yofunikira ya PowerCLI, analogue ya Get-WMIObject mu Windows. cmdlet iyi sikoka zinthu limodzi ndi mabungwe, koma amalandira zambiri mu mawonekedwe a chinthu chosavuta ndi yosavuta mitundu deta. Nthawi zambiri amatuluka mofulumira.
Ma Cmdlets amafunikira kuti mupeze zambiri popanda kufunika kowerenga mabuku ofotokozera a API ndikuyambiranso gudumu lotsatira. Zomwe m'masiku akale zidatenga mizere zana kapena iwiri, PowerShell imakulolani kuchita ndi lamulo limodzi. Timalipira izi mwachangu. Palibe matsenga mkati mwa cmdlets okha: script yemweyo, koma pamlingo wotsika, wolembedwa ndi manja aluso a mbuye wochokera ku India dzuwa.
Tsiku lina mnzanga anandipempha kuti ndikonzenso bwino script yake. Ntchitoyi ndi chizolowezi chodziwika: pezani ma VM onse okhala ndi chobwerezabwereza cloud.uuid parameter (inde, izi ndizotheka popanga VM mu vCloud Director).
Ma Runspaces ndi oyamba kupulumutsa mukafunika kupeza ma metric olandila kuchokera ku vCenter kapena muyenera kukonza zinthu masauzande ambiri. Tiyeni tiwone chomwe njira iyi imabweretsa.
Yatsani liwiro loyamba: PowerShell Runspaces
Chinthu choyamba chomwe chimabwera m'maganizo pa script iyi ndikuchita chipikacho osati motsatizana, koma mu ulusi wofanana, sonkhanitsani deta yonse mu chinthu chimodzi ndikuchisefa.
Koma pali vuto: PowerCLI sidzatilola kuti titsegule magawo ambiri odziyimira pawokha ku vCenter ndipo tidzaponya cholakwika choseketsa:
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.
Kuti muthetse izi, muyenera kupereka kaye zambiri za gawo mkati mwa mtsinjewo. Tikumbukire kuti PowerShell imagwira ntchito ndi zinthu zomwe zitha kuperekedwa ngati parameter ku ntchito kapena ku ScriptBlock. Tiyeni tidutse gawoli ngati chinthu choterocho, kudutsa $global:DefaultVIServers (Connect-VIServer with the -NotDefault key):
$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 $_
}
}
}
Tsopano tiyeni tigwiritse ntchito multithreading kudzera mu Runspace Pools.
Ma algorithm ndi awa:
Timapeza mndandanda wa ma VM onse.
Mu mitsinje yofananira timapeza cloud.uuid.
Timasonkhanitsa deta kuchokera ku mitsinje kukhala chinthu chimodzi.
Timasefa chinthucho pochiyika m'magulu ndi mtengo wa CloudUUID munda: omwe chiwerengero chazinthu zapadera ndi zazikulu kuposa 1 ndi ma VM omwe tikufuna.
Pezani-AdvancedOptions ndiyosavuta kuzinthu za VM, koma zimakhala zovutirapo mukamagwira ntchito ndi zinthu zambiri. Titha kudziwanso zomwezo kuchokera ku chinthu cha makina enieni (Get-VM). Zangoyikidwa bwino mu chinthu cha ExtensionData. Pokhala ndi zosefera, timafulumizitsa njira yopezera deta yofunikira.
Ndikuyenda pang'ono kwa dzanja izi:
VM | Get-AdvancedSetting -Name Cloud.uuid -Server $ConnectionString | Select-Object @{N="VMName";E={$_.Entity.Name}},@{N="CloudUUID";E={$_.Value}},@{N="PowerState";E={$_.Entity.PowerState}}
Kuphatikiza apo, chopinga chomwe chili mu mawonekedwe a Get-AdvancedOptions chachotsedwa palemba. Kugwiritsa ntchito Maiwe a Runspace tsopano kukuwoneka ngati kuchulukirachulukira chifukwa sipakufunikanso kufananiza ntchito yapang'onopang'ono kudutsa ulusi wa squat popereka gawo. Chidacho ndi chabwino, koma osati pankhaniyi.
Tiyeni tiwone zotsatira za ExtensionData: sichinthu choposa chinthu cha Get-View.
Tiyeni tiyitane pa njira yakale ya PowerShell masters: mzere umodzi wogwiritsa ntchito zosefera, kusanja ndi magulu. Zowopsa zonse zam'mbuyomu zidagwa mumzere umodzi ndikuchitidwa gawo limodzi: