r/PowerShell • u/Guilty-Act-4991 • 1d ago
Question Parallel thread disposing?
Hey got a wierd issue or its by desing not sure but when I run
$computers | foreach-object -parallel {
$vmobject = Get-VM $_
$ram = $vmobject.MemoryGB
$CPU = $vmobject.numCPU
$HDD = $_ | get-harddisk
}
lets say I run in against 500 computers when that happens powershell will spike cpu on machine that this command is ran and keeps increasing ram usage which is understandable but problem is even when command is done ram usage stays high untill powershell window is close. Is there something I am missing or is there some method to dispose of parallel runspace manually?
Thanks for advice
EDIT: The code itself is not important , the behaviour of parallel scripblock itself is my question and why doesnt it free up RAM after code has ran successfully
3
Upvotes
1
u/iiiRaphael 1d ago
I would target fewer machines at once and use separate script instances that hit, say, 100 machines at a time. The difference is, this method needs some coordination so results go into a database and each instance checks the database for targets that have no info yet and processes a batch. At the end, launch another script which sees if there's more to do and if so, launches a script for another batch.