Exchange 从所有组中移除指定账号(执行有错)

第1种:Microsoft 365: PowerShell to Remove a user from All Distribution Groups – SharePoint Diary

  • $UserToRemove= "Steve@Crescent.com"
  • Try {
  •     #Connect to Exchange Online
  •     #Connect-ExchangeOnline
  •     #Get All Distribution Lists - Excluding Mail enabled security groups
  •     $DistributionGroups= Get-Distributiongroup-resultsizeunlimited |  Where {!$_.GroupType.contains("SecurityEnabled")}
  •     #Loop through each Distribution Lists
  •     ForEach($Group in $DistributionGroups)
  •     {
  •         #Check if the Distribution List contains the particular user
  •         If((Get-DistributionGroupMember$Group.Name | Select-ExpandPrimarySmtpAddress) -contains $UserToRemove)
  •         {
  •             Remove-DistributionGroupMember -Identity $Group.Name-Member $UserToRemove -Confirm:$false
  •             Write-host"Removed user from group '$Group'"-fGreen
  •         }
  •     }
  • }
  • Catch {
  •     write-host -f Red "Error:"$_.Exception.Message
  • }

第2种

$DGs= Get-DistributionGroup foreach( $dg in $DGs) { Remove-DistributionGroupMember $dg -Member “user@domain.com” }

Exchange 添加邮件规则发送离职通知

  • Get-TransportRule -State Enabled | fl *
  • Get-TransportRule -State Enabled | Set-TransportRule -SentToMemberOf ‘Ex-Employee’
  • 查看 禁用的AD 用户
  • $DisableAduser = Get-ADUser -Filter {Enabled -eq “False” } | select name
  • New-DistributionGroup -OrganizationalUnit ‘OU=离职员工,DC=abc,DC=com’ -Name ‘Ex-Employee’ -Type Security
  • Get-DistributionGroupMember -Identity Ex-Employee | fl Name
  • 查看 特定OU 用户
  • $ExEployee01 = Get-ADUser -Filter * -SearchBase “OU=离职员工,DC=abc,DC=com” | Select-Object SamAccountName
  • $ExEployee01.SamAccountName | Add-DistributionGroupMember -Identity Ex-Employee
  • 查看 分发组(通讯组)
  • Get-ADGroup -Filter {GroupCategory -eq ‘Distribution’} | select Name
  • 查看 安全组
  • Get-ADGroup -Filter {GroupCategory -eq ‘Security’} | select Name

Exchange 邮件提示

添加邮件提示

  • 定义离职员工
  • $Offpost = ‘xianqi’
  • 禁用AD账号
  • Get-ADUser -Identity $Offpost | Disable-ADAccount
  • 查看所在的通讯组并迁移到离职员工OU
  • $ObjectGuid01 = (Get-ADUser -Identity $Offpost | Select-Object objectGuid).objectGuid.Guid
  • Move-ADObject -Identity $Offpost -TargetPath ‘OU=10月,OU=2023年,OU=离职员工,DC=abc,DC=com’
  • Move-ADObject -Identity $ObjectGuid01 -TargetPath ‘OU=10月,OU=2023年,OU=离职员工,DC=abc,DC=com’
  • Add-DistributionGroupMember -Identity Ex-Employee -Member $Offpost
  • 从所有组中删除离职账号,添加邮件提示
  • Set-Mailbox -Identity $Offpost -MailTip ‘我已离职,邮箱已停用.’
  • Get-DistributionGroupMember -Identity Ex-Employee
  • Get-ADPrincipalGroupMembership $Offpost | select Name

Exchange 邮件流(3) 消息追踪中的连接器ID

查看过去24小时发送给外部isoftstone的收件人

Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize unlimited | where {[string]$_.recipients -like “*@isoftstone.com”}

查询之前添加邮件服务器

Get-MessageTrackingLog -Sender user01@abc.com -Recipients user02@abc.com -MessageSubject “hello” -Start “2023-10-01” -End “2023-10-10” | ft Timestamp, EventId, Source,Sender, Recipients, MessageSubject, ClientIp, ConnectorId -AutoSize

connector-id:The name of the Send connector or Receive connector that accepted the message. For example, ServerNameConnectorName or ConnectorName.

Get-TransportService | Get-MessageTrackingLog -Sender xiazhenghua@thtfpc.com -ResultSize unlimited -EventId Deliver -Start 2024/07/11

首先,考虑可用于过滤日志中事件的主要 Get-MessageTrackingLog 参数。以下 cmdlet 参数最常用:

Sender——按发件人搜索;
recipients——按收件人搜索;
server——在特定的传输服务器上搜索;
start “11/30/2019 08:00:00” -end“ 12/18/2019 21:00:00”——搜索具体时间段;
MessageSubject — 按消息主题搜索;
EventID – 按 Exchange 事件搜索(通常使用以下代码:RECEIVE、SEND、FAIL、DSN、DELIVER、BADMAIL、RESOLVE、EXPAND、REDIRECT、TRANSFER、SUBMIT、POISONMESSAGE、DEFER);
messageID – 按消息 ID 跟踪。
如果在不带任何参数的情况下运行 Get-MessageTrackingLog cmdlet,则将显示过去 30 天 Exchange 传输日志中的所有事件。该 cmdlet 仅显示最后 1,000 个事件。要删除此限制,请使用–ResultSize Unlimited参数。(由于传输服务器上潜在的高负载,不建议在没有一些额外的过滤器参数的情况下执行此操作。)

您可以使用以下命令逐页显示有关 Exchange 事件的信息:
Get-MessageTrackingLog | Out-Host –Paging

例子1
-显示过去 24 小时 ( (Get-Date).AddHours(-24)) 的所有电子邮件,其中指定了来自 @gmail.com 域的收件人:
Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize unlimited | where {[string]$_.recipients -like "*@gmail.com"}
例子2
-要显示特定用户在给定时间段内通过特定服务器发送的所有电子邮件
Get-MessageTrackingLog -ResultSize unlimited –Sender "cmansion@china.com” –server rome1 -Start "11/30/2019 06:00:00" -End "12/13/2019 22:00:00" |select-object Timestamp,Sender,Recipients,MessageSubject,EventId|ft
或者
Get-MessageTrackingLog -ResultSize unlimited –Sender "cmansion@china.com” –server rome1 -Start "11/30/2019 06:00:00" -End "12/13/2019 22:00:00" |fl
例子3
-我们查找一个用户发送给另一个用户的所有电子邮件,并将搜索结果导出到 CSV 文件中
Get-MessageTrackingLog -Sender "cmansion@china.com" -Recipients "amorato@china.com" -ResultSize unlimited –server rome | Select-Object Timestamp,Sender,{$_.recipients},MessageSubject | Export-Csv -Path "C:\Export\exchange\exchange_tracking_logs.csv" -Encoding Default -Delimiter ";"
例子4
-可以按邮件主题进行搜索。要在主题字段中显示所有带有“test”字样的电子邮件,请运行以下命令。(要在单独的图形窗口中将结果显示为具有方便排序、过滤和搜索功能的表格,
Get-MessageTrackingLog -MessageSubject "test" -ResultSize unlimited –server rome | Select-Object Timestamp,Sender, {$_.recipients}, MessageSubject | out-gridview
例子5
-您可以通过特定的邮件 ID 进行搜索(您可以从 Outlook 中的邮件标题中获取):
Get-MessageTrackingLog -messageID "41A4321C3543314FFFFF23122F2BDB7ABD00342@rome-hub-01.woshub.com" -ResultSize unlimited –server rome-hub-01| Select-Object Timestamp,Sender, {$_.recipients}, MessageSubject
例子6
查看那个邮件接收过程中因为那个邮件流阻挡
$mail= Get-MessageTrackingLog -Server rome -Start "2022/1/18 10:0:0" -End "2022/1/18 20:00:00 " -Sender xiang.zhang@china.com -Recipients zhe.chen@china.com
看 #AGENTINFO 的是那一条
$mail[-4].EventData 查看 AGENTINFO的数据 [-4]表示 #AGENTINFO 在倒数第四条
在显示的数据中看ruleid 这个id号基本是最后一条。在邮件发送之后,邮件会依照顺序匹配所有邮件流如果,没有成功则会阻止掉,所以一般都只看最后一条ruleid
Get-TransportRule 099dce9d-9782-4494-9208-f24d6f991a54

Exchange 邮件流(1)邮件大小限制

邮件大小限制级别(作用域)有:组织、连接器、服务器、收件人。

  1. 组织限制 应用于内外部邮件
    • Get-TransportConfig | Format-List MaxReceiveSize,MaxSendSize,MaxRecipientEnvelopeLimit
    • Get-TransportRule | where {($_.MessageSizeOver -ne $null) -or ($_.AttachmentSizeOver -ne $null)} | Format-Table Name,MessageSizeOver,AttachmentSizeOver
  2. 连接器限制应用于使用指定发送连接器、接收连接器、传递代理连接器或外部连接器传递邮件的所有邮件。
    • Get-ReceiveConnector | Format-Table Name,Max*Size,MaxRecipientsPerMessage; Get-SendConnector | Format-Table Name,MaxMessageSize; Get-AdSiteLink | Format-Table Name,MaxMessageSize; Get-DeliveryAgentConnector | Format-Table Name,MaxMessageSize; Get-ForeignConnector | Format-Table Name,MaxMessageSize
  3. 服务器限制 :服务器限制应用于特定邮箱服务器或边缘传输服务器
    • 主要针对不同客户端(outlook web 、ActiveSync 、Exchange Web) 可以在”可以在邮箱服务器上的 web.config XML 应用程序配置文件中配置此值”
  4. 收件人限制 :主要应用于特定用户对象,例如邮箱、邮件联系人、邮件用户、通讯组或启用邮件的公用文件夹。(通常情况下没有限制 )
    • Get-Mailbox | Format-List MaxReceiveSize,MaxSendSize,RecipientLimits
    • $mb= Get-Mailbox -ResultSize unlimited; $mb | where {$_.RecipientTypeDetails -eq ‘UserMailbox’} | Format-Table Name,MaxReceiveSize,MaxSendSize,RecipientLimits
  5. 邮件限制的优先级及位置
    • 通过使所有位置中的限制保持一致,或针对邮件进入 Exchange 组织的位置配置更严格的限制来执行此操作。
    • 邮箱的邮件大小限制和邮件流规则中的邮件大小限制是个例外,例如 组织限制 大小是50M 邮箱的限制 大小是40M 外部发送为45M 的邮件大小会被拒绝。
    • 经过身份验证的发件人和收件人(通常为内部邮件发件人和收件人)之间的收件人限制不受组织邮件大小的限制。 
    • 该例外仅适用于经身份验证的发件人和收件人(通常为内部发件人和收件人)之间发送的邮件
    • 对于匿名发件人和收件人(通常为 Internet 发件人或 Internet 收件人)之间发送的邮件,则应用组织限制
  6. 推荐 保持一致
    • get-transportconfig | Set-TransportConfig -maxsendsize 10MB -maxreceivesize 10MB; get-receiveconnector | set-receiveconnector -maxmessagesize 10MB; get-sendconnector | set-sendconnector -maxmessagesize 10MB; get-mailbox | Set-Mailbox -Maxsendsize 10MB -maxreceivesize 10MB
  7. 创建规则设置邮件附件大小提示
    • New-TransportRule -Name LargeAttach -AttachmentSizeOver 10MB -RejectMessageReasonText “Message attachment size over 10MB – email rejected.”

https://www.cnblogs.com/reachos/p/9596968.html