현재 CPU & RAM (평균 5 개 샘플) 및 디스크 사용량에 대해 여러 Hyper-V 호스트를 쿼리하려고합니다. 나는 모든 쿼리를 병렬로 처리하기를 원하며, 결과적으로 VM을 생성하기위한 리소스가 가장 많은 호스트를 선택하려고한다.카운터 정보에 대해 여러 서버 쿼리 - PowerShell, 워크 플로
각 카운터가 순차적으로 검사되기 때문에 Get-Counter를 사용할 수 없지만 작업을 시도했지만 중첩 된 작업이 제대로 작동하지 않습니다. 그래서 마침내 워크 플로우를 시도하고 있는데, 문제는 의미있는 방식으로 정보를 저장하는 방법을 알 수 없다는 것입니다. 내가 해시 테이블에 해시 테이블을 사용하려고하지만 워크 플로에 유효하지 않은, 내가 사용하는 것은 :이 작업을 수행하는 더 나은 방법이있을 수 있음을
$HostResources["$Server"] = @{ "CPU"=$CPU; "RAM"=$RAM; "Disk"=$Disk }
가 나는 또한 느낌을 얻을 포함 Hyper-V 미터링을 사용할 수는 있지만 VM에서만 호스트에 대한 정보를 제공하지는 않습니다. 그래서 더 좋은 방법이 있다고 생각한다면, 올바른 방향으로 나를 가리키면 연구하러 갈 것입니다.
Workflow Get-Resources {
$Servers = @('host00', 'host01', 'host02', 'host03')
# $HostResources = @{}
ForEach -Parallel ($Server in $Servers) {
InlineScript { (Get-Counter -Counter "\Processor(_Total)\% Processor Time" -ComputerName $using:Server -SampleInterval 1 -MaxSamples 5).CounterSamples.CookedValue | Measure-Object -Average | Select-Object -ExpandProperty Average }
InlineScript { (Get-Counter -Counter "\Memory\Available MBytes" -ComputerName $using:Server -SampleInterval 1 -MaxSamples 5).CounterSamples.CookedValue | Measure-Object -Average | Select-Object -ExpandProperty Average }
InlineScript { (Get-Counter -Counter "\LogicalDisk(_Total)\% Free Space" -ComputerName $using:Server).CounterSamples.CookedValue }
}
}
$Result = Get-Resources
왜 모든 쿼리를 병렬로 수행 하시겠습니까? 그게 당신에게주는 이점은 무엇입니까? – alroc
현재 세 개의 카운터 만 검사 중입니다. 네트워크 대역폭, 디스크 iops, 대기열 길이 등을 추가 할 것입니다. 이는 호스트 당 시간이 더 많이 걸리고, 그 중 호스트 목록이 위에 표시된 것보다 훨씬 높습니다. 코드. 배포 시간을 줄이기 위해 가능한 빨리 스크립트를 작성하고 싶습니다. 모든 것이 순차적이면 모든 호스트를 확인하는 데 10 분 정도 걸릴 수 있습니다. – Aftab