首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤每个语句的Powershell结果

过滤每个语句的Powershell结果
EN

Stack Overflow用户
提问于 2021-05-31 08:30:28
回答 1查看 117关注 0票数 0

我编写了一个简单的脚本(或至少试图编写),以获得分配给特定Azure AD组的所有MicrosoftIn调优防御策略。

脚本获取所有防御策略,找到链接到这些策略的组ID,然后使用group获取实际名称。

现在,我需要找到一种只显示与特定组名匹配的策略(硬编码)的方法。在脚本的顶部,我有一个带有组名的变量。我只是找不到一种方法来过滤所有的$intent(s),只显示链接到组名称变量的那些。

代码语言:javascript
复制
Connect-MSGraph -ForceInteractive
Update-MSGraphEnvironment -SchemaVersion beta
Connect-MSGraph
Connect-AzureAD

$groupname = "group-name-here"

$intents = Invoke-MSGraphRequest -HttpMethod GET -Url "deviceManagement/intents" | Get-MSGraphAllPages


 foreach ($intent in $intents) {
        $PolicyID = Invoke-MSGraphRequest -HttpMethod GET -Url "deviceManagement/intents/$($intent.Id)/assignments"
        $AssignmentGroupIDs = $PolicyID.value.target.groupID

            foreach ($AssignmentGroupID in $AssignmentGroupIDs) {
                $AssignmentGroupName = Get-AzureADGroup -ObjectId $AssignmentGroupID

            }
        }


Write-Host "Number of policies found: $($intents.Id.Count)" -ForegroundColor cyan
Write-Host $AssignmentGroupName.DisplayName
Write-Host $intent.displayName
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-31 08:44:12

您创建并没有分配给变量的任何值都将是脚本块输出的一部分。这意味着你可以这样做:

代码语言:javascript
复制
$result = foreach (...) {
     if (condition) {
         $value
     }
}

$result将包含循环中的所有$value

在上下文中(未经测试,但您有此想法):

代码语言:javascript
复制
$matchingIntents = foreach ($intent in $intents) {
    $PolicyID = Invoke-MSGraphRequest -HttpMethod GET -Url "deviceManagement/intents/$($intent.Id)/assignments"
    $AssignmentGroupIDs = $PolicyID.value.target.groupID
    foreach ($AssignmentGroupID in $AssignmentGroupIDs) {
        $AssignmentGroupName = Get-AzureADGroup -ObjectId $AssignmentGroupID
        if ($AssignmentGroupName -eq $groupname) {
            $intent
            break
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67770325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档