我的目标是从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
答案 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
}
}