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

时间:2019-08-28 17:56:26

标签: powershell

我的目标是从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行:char:9

1 个答案:

答案 0 :(得分:1)

尝试将单行添加到开头,您将在其中定义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
    }
}