首页 > 解决方案 > Powershell 脚本错误:方法调用失败,因为 [System.Management.Automation.PSObject] 不包含名为“op_Addition”的方法

问题描述

我的目标是从 Azure AD 中导出用户和角色成员资格,并将列表导出到电子表格中。我从一位同事那里得到了这个代码,但我不断收到错误。目标是最终比较两个电子表格,以确定是否有任何角色在未经授权的情况下被更改。我也得到了该代码,但由于我无法获得第一个电子表格,第二部分将无法工作

我对 Powershell 没有太多经验,但我继承了这项任务。我对代码及其试图做什么有一个大致的了解,但我无法确定错误在哪里。我在 Java 方面有一些经验,我正在通过那个镜头查看这段代码,可能不是最好的方法。我希望有人能告诉我代码有什么问题,也许我可以在这里学到一些东西并能够解决第二部分。

$AzureADDirectoryRoles = Get-AzureADDirectoryRole
ForEach ($role in $AzureAdDirectoryRoles)
{
    $Members = Get-AzureAdDirectoryRoleMember -ObjectID $($role.ObjectID)
    ForEach ($member in $Members)
    {
        $obj = New-Object PSObject
        Add-Member -InputObject $obj -MemberType NoteProperty -Name RoleName 
       -Value $($role.DisplayName)
        Add-Member -InputObject $obj -MemberType NoteProperty -Name ObjectId 
       -Value $($Member.ObjectID)
        Add-Member -InputObject $obj -MemberType NoteProperty -Name 
        ObjectType -Value $($Member.ObjectType)
        Add-Member -InputObject $obj -MemberType NoteProperty -Name 
        DisplayName -Value $($Member.DisplayName)
        Add-Member -InputObject $obj -MemberType NoteProperty -Name 
        UserPrincipalName -Value $($Member.UserPrincipalName)
        $roleMembership += $obj
    }
}

我收到多个错误,但都是一样的。这是我在下面得到的错误。

方法调用失败,因为 [System.Management.Automation.PSObject] 不包含名为“op_Addition”的方法。在行:13 字符:9

标签: powershell

解决方案


尝试在开头添加单行,您将在其中定义 roleMembership 是一个空数组。

$roleMembership = @()
$AzureADDirectoryRoles = Get-AzureADDirectoryRole
ForEach ($role in $AzureAdDirectoryRoles) {
    $Members = Get-AzureAdDirectoryRoleMember -ObjectID $($role.ObjectID)
    ForEach ($member in $Members) {
        $obj = New-Object PSObject
        Add-Member -InputObject $obj -MemberType NoteProperty -Name RoleName -Value $($role.DisplayName)
        Add-Member -InputObject $obj -MemberType NoteProperty -Name ObjectId -Value $($Member.ObjectID)
        Add-Member -InputObject $obj -MemberType NoteProperty -Name ObjectType -Value $($Member.ObjectType)
        Add-Member -InputObject $obj -MemberType NoteProperty -Name DisplayName -Value $($Member.DisplayName)
        Add-Member -InputObject $obj -MemberType NoteProperty -Name UserPrincipalName -Value $($Member.UserPrincipalName)
        $roleMembership += $obj
    }
}

推荐阅读