当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Exchange Online PowerShell V2 使用案例和小教程

作者:精品下载站 日期:2024-12-14 07:13:16 浏览:15 分类:玩电脑

Exchange Online PowerShell V2 使用案例和小教程


使用 PowerShell 是一件很棒的事情,特别是当您必须管理一个大型且充满活力的组织时。让我们花一些时间来学习许多交易所管理员必须做的一些默认用例。在本文中,我将展示不同 PowerShell cmdlet 的各种组合,特别关注新的 Exchange Online cmdlet。你可以做更疯狂的事情,但我想展示一些基础知识。
够了,让我们开始吧。

新的 PowerShell 模块的安装非常简单,只需按照此链接上的说明进行操作即可。
以下是我安装、导入和连接 EX ON 模块的命令:

Install-Module -Name ExchangeOnlineManagement -Scope AllUsers -Verbose -Force
Import-Module -Name ExchangeOnlineManagement -Verbose
Get-Module ExchangeOnlineManagement
$creds = Get-Credential
Connect-ExchangeOnline -Credential $creds 
#Connect-ExchangeOnline -Credential $creds -ShowBanner:$false

连接后(如果没有关闭),您会在 PowerShell 控制台中看到新的 cmdlet:

[玩转系统] Exchange Online PowerShell V2 使用案例和小教程

可以看到,大部分cmdlet都是Get命令,所以现在用新版本来进行分析。如果您想了解此模块中包含的所有 cmdlet,请使用此 oneliner。

Get-Module ExchangeOnlineManagement | Select-Object ExportedCommands -ExpandProperty ExportedCommands

[玩转系统] Exchange Online PowerShell V2 使用案例和小教程

经过简短的介绍,我们可以用这组 cmdlet 做什么?使用这个新的 cmdlet

获取 EXONMailbox 参考

此 cmdlet 用于获取有关邮箱设置的信息,另请参阅此链接中描述的属性集。

#1.
#find all mailboxes with "alex" in the following attributes:
#CommonName (CN),DisplayName,FirstName,LastName,Alias
Get-EXOMailbox -Anr alex

#2.
#using different propertysets to get special information
Get-EXOMailbox -PropertySets Quota
#combine different propertysets 
Get-EXOMailbox -PropertySets Quota,Delivery
#combine different propertysets with individual properties
Get-EXOMailbox -PropertySets Quota,Delivery -Properties EmailAddresses,RecipientTypeDetails

#3.
#find users with special attributes
#find all shared mailboxes and their delivery options
Get-EXOMailbox -PropertySets Delivery -Properties RecipientTypeDetails  | Where-Object{$_.RecipientTypeDetails -eq "SharedMailbox"}  | Sort-Object UserPrincipalName
#find all usermailboxes with their delivery options
Get-EXOMailbox -PropertySets Delivery -Properties RecipientTypeDetails  | Where-Object{$_.RecipientTypeDetails -eq "UserMailbox"}  | Sort-Object UserPrincipalName

获取 EXOCasMailbox

通过“Get-EXOCasMailbox,您可以查看邮箱的连接属性(POP/IMAP/MAPI...),CAS=客户端访问服务
链接到属性集

#1.
#see all mailboxes with their cas settings 
Get-EXOCasMailbox

#2.
#see important information with different propertysets
Get-EXOCasMailbox -PropertySets Minimum
#see all mailboxes IMAP and POP settings
Get-EXOCasMailbox -PropertySets Imap,pop

#3.
#see all users with POP enabled
Get-EXOCasMailbox -PropertySets IMAP,POP | Where-Object {$_.PopEnabled -eq $true}
#see all users with POP and IMAP enabled
Get-EXOCasMailbox -PropertySets IMAP,POP | Where-Object {($_.PopEnabled -eq $true) -and ($_.ImapEnabled -eq $true)}
#see all users OWA enabled
Get-EXOCasMailbox -Properties OWAEnabled| Where-Object {$_.OWAEnabled -eq $true}

获取 EXOMailboxStatistics

使用此 cmdlet,您可以查看所有邮箱的大小

#see mailboxsize of special user 
#UPN,emailaddress,GUID are accepted parameters
Get-EXOMailboxStatistics -Identity alexander
Get-MailboxFolderStatistics -Identity alexander | ft Folderpath,FolderSize 
#see statistics of all users
Get-EXOMailbox | Get-EXOMailboxStatistics
#see statistics of all shared mailboxes
Get-EXOMailbox | Where-Object{$_.RecipientTypeDetails -eq "SharedMailbox"} | Get-EXOMailboxStatistics
#see detailed statistics of all users
Get-EXOMailbox | Get-EXOMailboxStatistics -PropertySets All

获取最大邮箱的脚本

$Mailboxstats = Get-EXOMailbox | Get-EXOMailboxStatistics 
$MailboxStats | Add-Member -MemberType ScriptProperty -Name TotalItemSizeInBytes -Value {$this.TotalItemSize -replace "(.*\()|,| [a-z]*\)", ""} 
$overview = $MailboxStats | Select-Object DisplayName, TotalItemSizeInBytes,@{Name="TotalItemSize (GB)"; Expression={[math]::Round($_.TotalItemSizeInBytes/1GB,2)}} | Sort-Object "TotalItemSize (GB)" -Descending
$overview

使所有邮箱大于...的脚本

#greaterthan value in GB and with "." as comma
$greaterthan = "0.5"
$Mailboxstats = Get-EXOMailbox | Get-EXOMailboxStatistics
$MailboxStats | Add-Member -MemberType ScriptProperty -Name TotalItemSizeInBytes -Value {$this.TotalItemSize -replace "(.*\()|,| [a-z]*\)", ""} 
$overview = $MailboxStats | Select-Object DisplayName,TotalItemSizeInBytes,@{Name="TotalItemSizeInGB"; Expression={[math]::Round($_.TotalItemSizeInBytes/1GB,2)}} | Sort-Object "TotalItemSizeInGB" -Descending
$overview | Where-Object {$_.TotalItemSizeInGB -gt "$greaterthan"}

获取所有邮箱以及所有邮箱大小总和的脚本

$Mailboxstats = Get-EXOMailbox -ResultSize unlimited | Get-EXOMailboxStatistics 
$MailboxStats | Add-Member -MemberType ScriptProperty -Name TotalItemSizeInBytes -Value {$this.TotalItemSize -replace "(.*\()|,| [a-z]*\)", ""} 
$overview = $MailboxStats | Select-Object DisplayName, TotalItemSizeInBytes,@{Name="TotalItemSizeInGB"; Expression={[math]::Round($_.TotalItemSizeInBytes/1GB,2)}} | Sort-Object "TotalItemSizeInGB" -Descending
$sumtemp = ($overview | Measure-Object TotalItemSizeInGB -Sum).Sum
$sum = $sumtemp.ToString()
$sum = "Sum of all Mailboxes in GB: "+$sum+" GB"
Write-Host "$sum" -ForegroundColor Yellow
$overview

[玩转系统] Exchange Online PowerShell V2 使用案例和小教程

获取 EXOMailboxFolderPermission

获取邮箱内的所有权限

#1.
#get special permission on one folder (need to know the foldername)
Get-EXOMailboxFolderPermission -Identity alexander:\Inbox

#2.
#get folders from one mailbox with their permissions
$email = "[email protected]"
$folders = (Get-EXOMailboxFolderStatistics -Identity $email)
$perm = @()
foreach($folder in $folders){#
  $fname = ($folder.Folderpath -replace '/','\') 
  $foldername = $email +":" +$fname
  $temp = Get-EXOMailboxFolderPermission -Identity "$foldername" -ErrorAction SilentlyContinue | Select-Object Identity,User,AccessRights
  $perm += $temp
}
$perm | ft 

获取 EXOMobileDeviceStatistics

查找与邮箱连接的移动设备

#1.
#get all mobile devices of one mailbox
Get-EXOMobileDeviceStatistics -Mailbox [email protected] | ft DeviceFriendlyName,DeviceOS,DeviceID,DeviceImei,FirstSyncTime,LastSuccessSync

#2.
#get all users and show their mobile devices
$UPN = (Get-EXOMailbox -ResultSize unlimited).Userprincipalname 
foreach($user in $UPN){
  $mobiles = Get-EXOMobileDeviceStatistics -Mailbox $user -ErrorAction SilentlyContinue
  if($mobiles){
    Write-Host "User: $user" -ForegroundColor Yellow
    $mobiles | ft DeviceFriendlyName,DeviceOS,DeviceID,DeviceImei,FirstSyncTime,LastSuccessSync
  } 
}

断开-ExchangeOnline

Disconnect-ExchangeOnline -Confirm:$false

这些 cmdlet 有更多的可能性,如果您有任何疑问或自己编写了一些脚本,请给我留言或发送电子邮件,我们可以在这里分享。如果您喜欢这些内容,请点击“有用”。敬请关注。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯