powershell 将CSV中的差异导入Azure Sec组

toiithl6  于 2022-11-10  发布在  Shell
关注(0)|答案(1)|浏览(76)

我想将Exchange Online中的所有共享邮箱与Azure Sec组中的成员进行比较,并导入Azure Sec组中的差异。我相信它在最后3行的某个地方失败了。这是一个备份解决方案,我不是代码的创建者。
Get-EXORecipient-ResultSize无限-RecipientType详细信息“SharedMailbox”|选择主SMTPAddress|导出-CSV“C:\Users\mnym\Downloads\Sharedmailboxes\sharedmailboxes.csv”
$GroupMembership=Get-AzureADGroupMember-OBJECTID“GROUP ID”-TOP 10000|选择对象@{Name=“PrimarySMTPAddress”;Expression={$.userprincipalname}}|导出-csv“C:\Users\mnym\Downloads\Sharedmailboxes\Groupmembership.csv”
$FILE1=导入-csv路径“C:\Users\mnym\Downloads\Sharedmailboxes\sharedmailboxes.csv”
$FILE2=(导入-csv-路径“C:\Users\mnym\Downloads\Sharedmailboxes\Groupmembership.csv”).PrimarySMTPAddress
$文件1|其中对象{$
.PrimarySMTPAddress-noin$File2}|导出csv路径“C:\Users\mnym\Downloads\sharedmailboxes\difference.csv”
$DIFF=导入csv路径“C:\Users\mnym\Downloads\sharedmailboxes\difference.csv”
Csv文件被填充并格式化为A#类型Selected.System.Management.Automation.PSCustomObject PrimarySmtpAddress x@Domain.com
$UserObjectID=导入csv路径“C:\Users\mnym\Downloads\sharedmailboxes\difference.csv”|ForEach对象{Get-azuRead用户-搜索字符串$.PrimarySmtpAddress}
$USEROBJECTID|SELECT OBJECTID|导出csv路径“C:\Users\mnym\Downloads\sharedmailboxes\userobjectid.csv”
在执行上述命令后,文件userobjectid.csv为空:(
IMPORT-CSV-PATH“C:\Users\mnym\Downloads\sharedmailboxes\userobjectid.csv”|为每个对象{Add-AzureADGroupMember-OBJECTID“组ID”-引用OBJECTID$
.OBJECTID}
我试图导入Difference.csv,但我无法接缝以获得与CSV匹配的RefObjectID,我得到“无法将实参绑定到参数‘RefObjectId’,因为它为空”。

bjp0bcyl

bjp0bcyl1#

不要将您的文件系统用作变量注册表--不需要将数据写入CSV文件,只需将其直接读回内存:)
您的代码可能非常简单:


# Define the target group id

$groupID = "group id"

# Start by creating a set of all email addresses that are already members of the security group

$securityGroupMembers = [System.Collections.Generic.HashSet[string]]::new([StringComparer]::OrdinalIgnoreCase)
Get-AzureADGroupMember -ObjectId $groupID -Top 10000 |ForEach-Object { 
    [void]$securityGroupMembers.Add($_.PrimarySMTPAddress)
}

# Then fetch the shared mailbox and check if they're already members of the group

Get-EXORecipient -ResultSize unlimited -RecipientTypeDetails "SharedMailbox" |ForEach-Object {
    if(-not $securityGroupMembers.Contains($_.PrimarySMTPAddress)){
        # Add shared mailbox to group
        Add-AzureADGroupMember -ObjectId $groupID -Refobjectid $_.ObjectId
    }
}

相关问题