首页 > 解决方案 > Powershell 批量返回结果

问题描述

我有下面的 office365 命令,如果可能的话,我可以用一些指针来做。

$GetUsersIDs = Get-MsolUser | Where-Object {($_.licenses).AccountSkuId -match "STANDARDWOFFPACK_STUDENT"} | Select -ExpandProperty UserPrincipalName
Grant-CsUserPolicyPackage -identity $GetUsersIDs -PackageName "Education_PrimaryStudent_RemoteLearning"

我希望它返回前 10 个结果并运行一个命令,然后返回下一个 10 个结果并运行一个命令,依此类推。这背后的原因是由于 Microsoft 的限制,只允许您批量运行命令 X。

标签: powershelloffice365

解决方案


您可以使用for递增 10 的循环来执行此操作。由于您的用户列表将是一个集合,因此您可以使用索引和范围运算符的组合..来批量输出。

$GetUsersIDs = Get-MsolUser | Where-Object {($_.licenses).AccountSkuId -match "STANDARDWOFFPACK_STUDENT"} |
    Select -ExpandProperty UserPrincipalName
for ($i = 0; $i -lt $GetUsersIDs.Count; $i += 10) {
    Grant-CsUserPolicyPackage -Identity $GetUsersIDs[$i..($i+9)] -PackageName "Education_PrimaryStudent_RemoteLearning"
}

请注意,Grant-CsUserPolicyPackage命令允许分批更新 20 个。


推荐阅读