如何找到获得真正随机抽样的最佳方法

时间:2014-05-20 16:33:07

标签: powershell sccm

我需要一个Powershell脚本,它将根据操作系统从1个SCCM集合添加不同数量的随机客户端到另一个集合。

我目前让它在不考虑操作系统的情况下工作,所以它只是从1个集合中随机挑选客户并将它们放入另一个集合中。我现在想要添加功能来随机化他们正在运行的操作系统。这是为了从集合中获得尽可能准确的操作系统样本。

这是我目前所拥有的:

## Get a bunch of objects (clients) with name and DeviceOS properties
$SourceClients = Get-WmiObject @ConfigMgrWmiProps -Class "SMS_CM_RES_COLL_$SourceCollectionId" | select Name, DeviceOS

此时,我被困住了。我想过用DeviceOS对它们进行分组,使用随机数组索引在每个DeviceOS分组中查找随机客户端,但我想到了可能有时候我只需要5个随机客户端的可能性,例如,共有10个不同的DeviceOS组。我怎么会这样随机抽样?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

是否尝试从$SourceClients集合中挑选一个随机元素?如果是这样,您可以使用Get-Random

$SourceClients | Get-Random

将返回单个随机对象。获得5个对象:

1..5 | % { $SourceClients | Get-Random }

如果您想从随机操作系统中获取5个随机客户端

($SourceClients | group DeviceOS| Get-Random).Group | Get-Random

或特定操作系统的随机客户端

$SourceClients | where {$_.DeviceOS -eq "MySpecificOS" }| Get-Random