é ããæ©ãããVMware ã·ã¹ãã 管çè ã¯æ¥åžžçãªã¿ã¹ã¯ãèªååããããã«ãªããŸãã ãã¹ãŠã¯ã³ãã³ã ã©ã€ã³ããå§ãŸãã次㫠PowerShell ãŸã㯠VMware PowerCLI ãç»å ŽããŸãã
ISE ãèµ·åãããããçš®ã®éæ³ãã«ãã£ãŠæ©èœããã¢ãžã¥ãŒã«ããæšæºã³ãã³ãã¬ããã䜿çšãããããå°ãé²ã㧠PowerShell ããã¹ã¿ãŒãããšããŸãã ä»®æ³ãã·ã³ãæ°çŸå°åäœã§æ°ãå§ãããšãå°èŠæš¡ã§ã¯åœ¹ç«ã€ã¹ã¯ãªãããã倧èŠæš¡ã§ã¯å®è¡ãèããé ããªãããšãããããŸãã
ãã®ç¶æ³ã§ã¯ã次㮠2 ã€ã®ããŒã«ã圹ã«ç«ã¡ãŸãã
- PowerShell å®è¡ã¹ããŒã¹ â å¥ã ã®ã¹ã¬ããã§ããã»ã¹ã®å®è¡ã䞊ååã§ããã¢ãããŒãã
- ååŸãã¥ãŒ â åºæ¬ç㪠PowerCLI é¢æ°ãWindows ã® Get-WMIObject ã«çžåœããŸãã ãã®ã³ãã³ãã¬ããã¯ãšã³ãã£ãã£ã«ä»éãããªããžã§ã¯ããååŸããŸããããåçŽãªããŒã¿åãæã€åçŽãªãªããžã§ã¯ãã®åœ¢åŒã§æ å ±ãåãåããŸãã å€ãã®å Žåããã®æ¹ãæ©ãåºãŠããŸãã
次ã«ãåããŒã«ã«ã€ããŠç°¡åã«èª¬æãã䜿çšäŸã瀺ããŸãã ç¹å®ã®ã¹ã¯ãªãããåæããŠãäžæ¹ã®ã¹ã¯ãªãããä»æ¹ã®ã¹ã¯ãªãããããããŸãåäœãããã©ããã確èªããŠã¿ãŸãããã è¡ãïŒ
æåã®ã¹ããŒãž: ã©ã³ã¹ããŒã¹
ãã®ãããRunspace ã¯ã¡ã€ã³ ã¢ãžã¥ãŒã«ã®å€åŽã§ã¿ã¹ã¯ã䞊ååŠçã§ããããã«èšèšãããŠããŸãã ãã¡ãããã¡ã¢ãªãããã»ããµãªã©ãæ¶è²»ããå¥ã®ããã»ã¹ãèµ·åããããšãã§ããŸããã¹ã¯ãªãããæ°åã§å®è¡ãããã®ã¬ãã€ãã®ã¡ã¢ãªãæ¶è²»ããå Žåã¯ããããã Runspace ã¯å¿ èŠãããŸããã ãã ããæ°äžã®ãªããžã§ã¯ãçšã®ã¹ã¯ãªããã®å Žåã¯å¿ èŠã§ãã
ããããåŠç¿ãå§ããããšãã§ããŸãã
PowerShell å®è¡ç©ºéã®äœ¿çšãéå§ãã: ããŒã 1
Runspace ã䜿çšãããšæ¬¡ã®ããšãåŸãããŸãã
- å®è¡ãããã³ãã³ãã®ãªã¹ããå¶éããããšã§é床ãåäžãããŸãã
- ã¿ã¹ã¯ã®äžŠåå®è¡ã
- å®å š
Runspace ã圹ç«ã€ã€ã³ã¿ãŒãããã®äŸã次ã«ç€ºããŸãã
ãã¹ãã¬ãŒãžç«¶åã¯ãvSphere ã§è¿œè·¡ããã®ãæãé£ããææšã® XNUMX ã€ã§ãã vCenter å ã§ã¯ãã©ã® VM ãããå€ãã®ã¹ãã¬ãŒãž ãªãœãŒã¹ãæ¶è²»ããŠãããããã 確èªããããšã¯ã§ããŸããã 幞ããªããšã«ãPowerShell ã®ãããã§ããã®ããŒã¿ã¯æ°åã§åéã§ããŸãã
VMware ã·ã¹ãã 管çè ã vCenter å šäœããã°ããæ€çŽ¢ããå¹³åæ¶è²»éã«é¢ããããŒã¿ãå«ã VM ã®ãªã¹ããååŸã§ããããã«ããã¹ã¯ãªãããå ±æããŸãã
ãã®ã¹ã¯ãªãã㯠PowerShell å®è¡ç©ºéã䜿çšããŠãå ESXi ãã¹ããåå¥ã®å®è¡ç©ºéå ã®ç¬èªã® VM ããæ¶è²»æ å ±ãåéããããã«å®äºãå ±åã§ããããã«ããŸãã ããã«ãããPowerShell ã¯ãã¹ããå埩åŠçããŠåãã¹ããèŠæ±ãå®äºããã®ãåŸ ã€ããšãªãããžã§ããããã«éããããšãã§ããŸãããåºæïŒ
ESXi ããã·ã¥ããŒãã«ä»®æ³ãã·ã³ I/O ã衚瀺ããæ¹æ³
以äžã®å ŽåãRunspace ã¯åœ¹ã«ç«ã¡ãŸããã
ãVM ãã倧éã®ããŒã¿ãåéããå¿ èŠã«å¿ããŠæ°ããããŒã¿ãæžã蟌ãã¹ã¯ãªãããäœæããããšããŠããŸãã åé¡ã¯ãVM ãéåžžã«å€ãã5 å°ã®ãã·ã³ã« 8 ïœ XNUMX ç§ãããããšã§ããã
åºæïŒ
RunspacePool ã䜿çšãããã«ãã¹ã¬ãã PowerCLI
ãã㧠Get-View ãå¿ èŠã«ãªããŸãã次ã«é²ã¿ãŸãããã
第 XNUMX 段é: Get-View
Get-View ããªã圹ç«ã€ã®ããç解ããã«ã¯ãã³ãã³ãã¬ãããäžè¬çã«ã©ã®ããã«æ©èœããããèŠããŠãã䟡å€ããããŸãã
ã³ãã³ãã¬ããã¯ãAPI ãªãã¡ã¬ã³ã¹ ããã¯ãèªãã§æ¬¡ã®è»èŒªãåçºæããããšãªããæ å ±ãç°¡åã«ååŸããããã«å¿ èŠã§ãã 以å㯠XNUMX ïœ XNUMX è¡ã®ã³ãŒããå¿ èŠã§ããããPowerShell ã䜿çšãããš XNUMX ã€ã®ã³ãã³ãã§å®è¡ã§ããããã«ãªããŸãã ç§ãã¡ã¯ãã®å©äŸ¿æ§ã«å¯ŸããŠè¿ éãªå¯ŸäŸ¡ãæ¯æããŸãã ã³ãã³ãã¬ããèªäœã®å éšã«ã¯éæ³ã¯ãããŸãããåãã¹ã¯ãªããã§ãããããäœãã¬ãã«ã§ã倪éœãéã泚ãã€ã³ãã®é人ã®çç·Žããæã«ãã£ãŠæžãããŠããŸãã
ããã§ãGet-View ãšæ¯èŒããããã«ãGet-VM ã³ãã³ãã¬ãããèŠãŠã¿ãŸãããããã®ã³ãã³ãã¬ããã¯ä»®æ³ãã·ã³ã«ã¢ã¯ã»ã¹ããè€åãªããžã§ã¯ããè¿ããŸããã€ãŸããä»ã®é¢é£ãªããžã§ã¯ã (VMHostãDatastore ãªã©) ãä»®æ³ãã·ã³ã«ã¢ã¿ããããŸãã
Get-View ã代ããã«äœ¿çšãããšãè¿ããããªããžã§ã¯ãã«äžå¿ èŠãªãã®ã¯äœãè¿œå ãããŸããã ããã«ãå¿ èŠãªæ å ±ãå³å¯ã«æå®ã§ãããããåºåãªããžã§ã¯ããç°¡åã«ãªããŸãã Windows Server å šè¬ãç¹ã« Hyper-V ã§ã¯ãGet-WMIObject ã³ãã³ãã¬ãããçŽæ¥é¡äŒŒããŠãããèãæ¹ã¯ãŸã£ããåãã§ãã
Get-View ã¯ããã€ã³ã ãªããžã§ã¯ãã«å¯Ÿããæ¥åžžçãªæäœã«ã¯äžäŸ¿ã§ãã ããããäœåãäœäžãã®ãªããžã§ã¯ããšãªããšãå€æ®µãã€ããŸããã
詳现ã«ã€ããŠã¯ãVMware ããã°ãã芧ãã ããã
Get-View ã®æŠèŠ
ããã§ã¯ãå®éã®ã±ãŒã¹ã䜿çšããŠãã¹ãŠã説æããŸãã
VM ãã¢ã³ããŒãããã¹ã¯ãªããã®äœæ
ããæ¥ãååããã¹ã¯ãªãããæé©åããŠã»ãããšé ŒãŸããŸããã ãã®ã¿ã¹ã¯ã¯äžè¬çãªã«ãŒãã³ã§ããéè€ãã Cloud.uuid ãã©ã¡ãŒã¿ãæã€ãã¹ãŠã® VM ãæ€çŽ¢ããŸã (ã¯ãããã㯠vCloud Director 㧠VM ã®ã¯ããŒã³ãäœæãããšãã«å¯èœã§ã)ã
æãæµ®ãã¶æçœãªè§£æ±ºçã¯æ¬¡ã®ãšããã§ãã
- ãã¹ãŠã® VM ã®ãªã¹ããååŸããŸãã
- äœããã®æ¹æ³ã§ãªã¹ãã解æããŸãã
ãªãªãžãã«ã®ããŒãžã§ã³ã¯æ¬¡ã®ãããªåçŽãªã¹ã¯ãªããã§ããã
function Get-CloudUUID1 {
# ÐПлÑÑаеЌ ÑпОÑПк вÑеÑ
ÐÐ
$vms = Get-VM
$report = @()
# ÐбÑабаÑÑваеЌ кажЎÑй ПбÑекÑ, пПлÑÑÐ°Ñ ÐžÐ· МегП ÑПлÑкП 2 ÑвПйÑÑва: ÐÐŒÑ ÐРО Cloud UUID.
# ÐаМПÑОЌ ЎаММÑе в МПвÑй PS-ПбÑÐµÐºÑ Ñ Ð¿ÐŸÐ»ÑЌО VM О UUID
foreach ($vm in $vms)
{
$table = "" | select VM,UUID
$table.VM = $vm.name
$table.UUID = ($vm | Get-AdvancedSetting -Name cloud.uuid).Value
$report += $table
}
# ÐПзвÑаÑаеЌ вÑе ПбÑекÑÑ
$report
}
# Ðалее РУÐÐÐРпаÑÑОЌ пПлÑÑеММÑй ÑезÑлÑÑаÑ
ãã¹ãŠãéåžžã«ã·ã³ãã«ãã€æ確ã§ãã ã³ãŒããŒãã¬ã€ã¯ãæã¿ãªããæ°åã§æžããŸãã ãã£ã«ã¿ãŒããã蟌ãã§å®äºã§ãã
ãããæéã枬ã£ãŠã¿ãŸããã:
2å47ç§ çŽ 10 åã® VM ãåŠçããå Žåã å©ç¹ã¯ããã£ã«ã¿ãŒããªãããšãšãçµæãæåã§äžŠã¹æ¿ããå¿
èŠããªãããšã§ãã æããã«ãã¹ã¯ãªããã«ã¯æé©åãå¿
èŠã§ãã
å®è¡ç©ºéã¯ãvCenter ãããã¹ã ã¡ããªãã¯ãåæã«ååŸããå¿ èŠãããå ŽåããŸãã¯æ°äžã®ãªããžã§ã¯ããåŠçããå¿ èŠãããå Žåã«ãæåã«åœ¹ã«ç«ã¡ãŸãã ãã®ã¢ãããŒããäœãããããããèŠãŠã¿ãŸãããã
æåã®é床ããªã³ã«ãã: PowerShell ã©ã³ã¹ããŒã¹
ãã®ã¹ã¯ãªããã§æåã«æãã€ãã®ã¯ãã«ãŒããé 次ã§ã¯ãªã䞊åã¹ã¬ããã§å®è¡ãããã¹ãŠã®ããŒã¿ã XNUMX ã€ã®ãªããžã§ã¯ãã«åéããŠãã£ã«ã¿ãŒåŠçããããšã§ãã
ããããåé¡ããããŸããPowerCLI ã§ã¯ãvCenter ãžã®å€ãã®ç¬ç«ããã»ãã·ã§ã³ãéãããšãã§ããã次ã®ãããªé¢çœããšã©ãŒãã¹ããŒãããŸãã
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.
ããã解決ããã«ã¯ããŸãã¹ããªãŒã å ã§ã»ãã·ã§ã³æ å ±ãæž¡ãå¿ èŠããããŸãã PowerShell ã¯ãé¢æ°ãŸã㯠ScriptBlock ã«ãã©ã¡ãŒã¿ãŒãšããŠæž¡ãããšãã§ãããªããžã§ã¯ããæäœããããšãæãåºããŠãã ããã $global:DefaultVIServers (-NotDefault ããŒã䜿çšã㊠Connect-VIServer) ããã€ãã¹ããŠããã®ãããªãªããžã§ã¯ãã®åœ¢åŒã§ã»ãã·ã§ã³ãæž¡ããŸãããã
$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 $_
}
}
}
次ã«ãRunspace Pools ãä»ããŠãã«ãã¹ã¬ãããå®è£ ããŸãããã
ã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã
- ãã¹ãŠã® VM ã®ãªã¹ããååŸããŸãã
- 䞊åã¹ããªãŒã ã§ã¯ãcloud.uuid ãååŸããŸãã
- ã¹ããªãŒã ããã®ããŒã¿ã XNUMX ã€ã®ãªããžã§ã¯ãã«åéããŸãã
- CloudUUID ãã£ãŒã«ãã®å€ã§ã°ã«ãŒãåããããšã§ãªããžã§ã¯ãããã£ã«ã¿ãŒåŠçããŸããäžæã®å€ã®æ°ã 1 ãã倧ãããã®ããæ¢ããŠãã VM ã§ãã
ãã®çµæã次ã®ã¹ã¯ãªãããåŸãããŸãã
function Get-VMCloudUUID {
param (
[string[]]
[ValidateNotNullOrEmpty()]
$vCenters = @(),
[int]$MaxThreads,
[System.Management.Automation.PSCredential]
[System.Management.Automation.Credential()]
$Credential
)
$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 $_
}
}
}
# ÐПлÑÑаеЌ ÑпОÑПк вÑеÑ
ÐÐ
$Global:AllVMs = Get-VM -Server $ConnectionString
# ÐПеÑ
алО!
$ISS = [system.management.automation.runspaces.initialsessionstate]::CreateDefault()
$RunspacePool = [runspacefactory]::CreateRunspacePool(1, $MaxThreads, $ISS, $Host)
$RunspacePool.ApartmentState = "MTA"
$RunspacePool.Open()
$Jobs = @()
# ScriptBlock Ñ ÐŒÐ°Ð³ÐžÐµÐ¹!)))
# ÐЌеММП ПМ бÑÐŽÐµÑ Ð²ÑпПлМÑÑÑÑÑ Ð² пПÑПке
$scriptblock = {
Param (
$ConnectionString,
$VM
)
$Data = $VM | Get-AdvancedSetting -Name Cloud.uuid -Server $ConnectionString | Select-Object @{N="VMName";E={$_.Entity.Name}},@{N="CloudUUID";E={$_.Value}},@{N="PowerState";E={$_.Entity.PowerState}}
return $Data
}
# ÐеМеÑОÑÑеЌ пПÑПкО
foreach($VM in $AllVMs)
{
$PowershellThread = [PowerShell]::Create()
# ÐПбавлÑеЌ ÑкÑОпÑ
$null = $PowershellThread.AddScript($scriptblock)
# РПбÑекÑÑ, кПÑПÑÑе пеÑеЎаЎОЌ в каÑеÑÑве паÑаЌеÑÑПв ÑкÑОпÑÑ
$null = $PowershellThread.AddArgument($ConnectionString)
$null = $PowershellThread.AddArgument($VM)
$PowershellThread.RunspacePool = $RunspacePool
$Handle = $PowershellThread.BeginInvoke()
$Job = "" | Select-Object Handle, Thread, object
$Job.Handle = $Handle
$Job.Thread = $PowershellThread
$Job.Object = $VM.ToString()
$Jobs += $Job
}
# СÑавОЌ гÑаЎÑÑМОк, ÑÑÐŸÐ±Ñ ÐœÐ°Ð³Ð»ÑЎМП ПÑÑлежОваÑÑ Ð²ÑпПлМеМОе заЎаМОй
# РзЎеÑÑ Ð¶Ðµ пÑОбОваеЌ ПÑÑабПÑавÑОе заЎаМОÑ
While (@($Jobs | Where-Object {$_.Handle -ne $Null}).count -gt 0)
{
$Remaining = "$($($Jobs | Where-Object {$_.Handle.IsCompleted -eq $False}).object)"
If ($Remaining.Length -gt 60) {
$Remaining = $Remaining.Substring(0,60) + "..."
}
Write-Progress -Activity "Waiting for Jobs - $($MaxThreads - $($RunspacePool.GetAvailableRunspaces())) of $MaxThreads threads running" -PercentComplete (($Jobs.count - $($($Jobs | Where-Object {$_.Handle.IsCompleted -eq $False}).count)) / $Jobs.Count * 100) -Status "$(@($($Jobs | Where-Object {$_.Handle.IsCompleted -eq $False})).count) remaining - $remaining"
ForEach ($Job in $($Jobs | Where-Object {$_.Handle.IsCompleted -eq $True})){
$Job.Thread.EndInvoke($Job.Handle)
$Job.Thread.Dispose()
$Job.Thread = $Null
$Job.Handle = $Null
}
}
$RunspacePool.Close() | Out-Null
$RunspacePool.Dispose() | Out-Null
}
function Get-CloudUUID2
{
[CmdletBinding()]
param(
[string[]]
[ValidateNotNullOrEmpty()]
$vCenters = @(),
[int]$MaxThreads = 50,
[System.Management.Automation.PSCredential]
[System.Management.Automation.Credential()]
$Credential)
if(!$Credential)
{
$Credential = Get-Credential -Message "Please enter vCenter credentials."
}
# ÐÑзПв ÑÑМкÑОО Get-VMCloudUUID, гЎе ÐŒÑ ÑаÑпаÑаллелОваеЌ ПпеÑаÑОÑ
$AllCloudVMs = Get-VMCloudUUID -vCenters $vCenters -MaxThreads $MaxThreads -Credential $Credential
$Result = $AllCloudVMs | Sort-Object Value | Group-Object -Property CloudUUID | Where-Object -FilterScript {$_.Count -gt 1} | Select-Object -ExpandProperty Group
$Result
}
ãã®ã¹ã¯ãªããã®å©ç¹ã¯ãScriptBlock ãšã¹ããªãŒã ã«æž¡ããããã©ã¡ãŒã¿ãŒã眮ãæããã ãã§ãä»ã®åæ§ã®ã±ãŒã¹ã§ã䜿çšã§ããããšã§ãã ãããæªçšããŸãããïŒ
æéãèšæž¬ããŸã:
55ç§ã æ¹åãããŸããããããã§ãããã«é«éã«ãªãå¯èœæ§ããããŸãã
XNUMX çªç®ã®é床ã«ç§»ããŸããã: GetView
äœãåé¡ãªã®ã調ã¹ãŠã¿ãŸãããã
äœããããŸããGet-VM ã³ãã³ãã¬ããã®å®è¡ã«ã¯æéãããããŸãã
次ã«ãGet-AdvancedOptions ã³ãã³ãã¬ããã®å®äºã«ã¯ããã«æéãããããŸãã
ãŸã XNUMX çªç®ã®ããšã«å¯ŸåŠããŸãããã
Get-AdvancedOptions ã¯åã ã® VM ãªããžã§ã¯ãã«ã¯äŸ¿å©ã§ãããå€æ°ã®ãªããžã§ã¯ããæäœããå Žåã¯éåžžã«æ±ãã«ããã§ãã ä»®æ³ãã·ã³ ãªããžã§ã¯ãèªäœããåãæ å ±ãååŸã§ããŸã (Get-VM)ã ãã㯠ExtensionData ãªããžã§ã¯ãã«ããŸãåã蟌ãŸããŠããŸãã ãã£ã«ã¿ãªã³ã°ãå©çšããããšã§ãå¿ èŠãªããŒã¿ãååŸããããã»ã¹ãé«éåãããŸãã
æãå°ãåãããšæ¬¡ã®ããã«ãªããŸãã
VM | Get-AdvancedSetting -Name Cloud.uuid -Server $ConnectionString | Select-Object @{N="VMName";E={$_.Entity.Name}},@{N="CloudUUID";E={$_.Value}},@{N="PowerState";E={$_.Entity.PowerState}}
ããã¯æ¬¡ã®ããã«ãªããŸãã
$VM | Where-Object {($_.ExtensionData.Config.ExtraConfig | Where-Object {$_.key -eq "cloud.uuid"}).Value -ne $null} | Select-Object @{N="VMName";E={$_.Name}},@{N="CloudUUID";E={($_.ExtensionData.Config.ExtraConfig | Where-Object {$_.key -eq "cloud.uuid"}).Value}},@{N="PowerState";E={$_.summary.runtime.powerstate}}
åºå㯠Get-AdvancedOptions ãšåãã§ãããåäœã¯äœåãé«éã§ãã
次ã«ãGet-VM ãå®è¡ããŸãã è€éãªãªããžã§ã¯ããæ±ããããé«éã§ã¯ãããŸããã è«ççãªçåãçããŸããVM ã®ååããã®ç¶æ ãããã³æ±ãã«ããå±æ§ã®å€ã ããå¿ èŠãªå Žåã«ããªãè¿œå ã®æ å ±ãšå·šå€§ãª PSObject ãå¿ èŠãªã®ã§ããããã
ããã«ãGet-AdvancedOptions 圢åŒã®é害ãã¹ã¯ãªããããåé€ãããŸããã ã»ãã·ã§ã³ãåŒãæž¡ããšãã«ãé ãã¿ã¹ã¯ãã¹ã¯ã¯ããã¹ã¬ããéã§äžŠååããå¿ èŠããªããªã£ããããRunspace Pools ã䜿çšããã®ã¯éå°ã§ããããã«æããŸãã ãã®ããŒã«ã¯åªããŠããŸããããã®å Žåã«ã¯é©ããŠããŸããã
ExtensionData ã®åºåãèŠãŠã¿ãŸããããããã¯åãªã Get-View ãªããžã§ã¯ãã§ãã
PowerShell ãã¹ã¿ãŒã®å€ä»£ã®ãã¯ããã¯ãã€ãŸããã£ã«ã¿ãŒã䞊ã¹æ¿ããã°ã«ãŒãåã䜿çšãã XNUMX è¡ã䜿ã£ãŠã¿ãŸãããã ãããŸã§ã®ææã¯ãã¹ãŠ XNUMX è¡ã«ãšã¬ã¬ã³ãã«ãŸãšããããXNUMX ã€ã®ã»ãã·ã§ã³ã§å®è¡ãããŸãã
$AllVMs = Get-View -viewtype VirtualMachine -Property Name,Config.ExtraConfig,summary.runtime.powerstate | Where-Object {($_.Config.ExtraConfig | Where-Object {$_.key -eq "cloud.uuid"}).Value -ne $null} | Select-Object @{N="VMName";E={$_.Name}},@{N="CloudUUID";E={($_.Config.ExtraConfig | Where-Object {$_.key -eq "cloud.uuid"}).Value}},@{N="PowerState";E={$_.summary.runtime.powerstate}} | Sort-Object CloudUUID | Group-Object -Property CloudUUID | Where-Object -FilterScript {$_.Count -gt 1} | Select-Object -ExpandProperty Group
æéãèšæž¬ããŸã:
9ç§ åžæã®æ¡ä»¶ã§ãã£ã«ã¿ãªã³ã°ãããšãã»ãŒ 10 åã®ãªããžã§ã¯ãã«å¯Ÿå¿ããŸãã çŽ æŽãããïŒ
代ããã«ãçµè«ã®
蚱容ã§ããçµæã¯ãããŒã«ã®éžæã«çŽæ¥äŸåããŸãã ãããéæããã«ã¯æ£ç¢ºã«äœãéžæãã¹ãããæ確ã«èšãã®ã¯é£ããããšããããããŸãã ã¹ã¯ãªãããé«éåããããã«ãªã¹ããããåæ¹æ³ã¯ããã®é©çšç¯å²ã®ç¯å²å ã§é©åã§ãã ãã®èšäºããã€ã³ãã©ã¹ãã©ã¯ãã£ã«ãããããã»ã¹ã®èªååãšæé©åã®åºæ¬ãç解ãããšããé£ããäœæ¥ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
PSïŒ èè
ã¯ãèšäºã®æºåã«ããããã³ãã¥ãã㣠ã¡ã³ããŒã®çæ§ã®ãååãšãååã«æè¬ããããŸãã 足ã®ãã人ã§ãã ãã¢ã³ã³ã¹ããªã¯ã¿ãŒã®ããã«è¶³ã®ãªã人ã§ãã
åºæïŒ habr.com