powershell - 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
解决方案
尝试在开头添加单行,您将在其中定义 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
}
}
推荐阅读
- bash - Git:应用新文件的差异
- applescript - 如何使用苹果脚本同时打开多个查找器窗口?
- node.js - 如何将队列使用的消息发送到快速应用程序?
- c++ - 获取具有特定距离的键值对数组中的第二个最大数
- azure-data-factory-2 - 使用 Azure 数据工厂中的存储过程转换数据
- python - 如何使用 PIL 将 1 通道图像转换为 3 通道?
- python - 当表格是 JSON 对象时,如何使用 BeautifulSoup 导入 CSS 表格?
- facebook - 有没有办法将可以使用 Messenger 机器人的国家列入白名单?
- c - 用于 C 的西班牙语的 locale.h 选项
- logging - grpc 记录器级别