Powershell 随机选择和计数

标签 powershell

我正在尝试编写一个 powershell 脚本,该脚本从数组中随机选取 10 个项目,列出它们,然后写入选取最多的一项以及选取次数。

我有这个:

for ($num = 1 ; $num -le 10 ; $num++){
$namelist = @(
    "Item 1",
    "Item 2",
    "Item 3",
    "Item 4",
    "Item 5"
)
Get-Random -InputObject $NameList
}

结果它向我显示了列表中的 10 个选项,但每次我都需要计算哪一个被选中最多。

有人可以帮忙吗?

最佳答案

您可以组合Group-ObjectSort-Object :

$namelist = @(
    "Item 1"
    "Item 2"
    "Item 3"
    "Item 4"
    "Item 5"
)

& {
    for ($num = 1 ; $num -le 10 ; $num++) {
        Get-Random -InputObject $NameList
    }
} | Group-Object -NoElement | Sort-Object Count -Descending

这将返回一个对象数组,如果您想查看哪个对象被选中最多,您可以将其通过管道传输到Select-Object -First 1

如果您出于某种原因不想使用Group-Object,您也可以使用 hash table 来完成此操作:

$map = @{}
for ($num = 1 ; $num -le 10 ; $num++) {
    $pick = Get-Random -InputObject $NameList
    $map[$pick] = 1 + $map[$pick]
}
$map.GetEnumerator() | Sort-Object { $_.Value } -Descending

关于Powershell 随机选择和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72395192/

相关文章:

Powershell删除OU中的所有用户

powershell - 使用powershell自动提升批处理文件,不会破坏参数,但会出现调用问题

windows - 如何让powershell脚本在同一终端执行批处理命令

powershell - curl 的Invoke-RestMethod或Invoke-WebRequest版本?

PowerShell - 为什么 get-date -displayhint

powershell - 调用powershell函数的批处理脚本

Powershell:将唯一字符串转换为唯一整数

用于字符串中可选等号分隔符的 Powershell 正则表达式

html - 转换为 HTML Azure Powershell "Get-VM"

windows - wget 没有使用基于环境变量的代理设置