0

我需要一个 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 组。我将如何获得随机抽样?

谢谢你的帮助!

4

1 回答 1

1

是否试图从您的$SourceClients收藏中挑选一个随机元素?如果是这样,您可以使用Get-Randomie。

$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
于 2014-05-21T13:44:22.500 回答