使用PowerShell 批量修改O365 用戶UPN
阿新 • • 發佈:2018-02-08
exce pri shel ring mes throw cat -o 腳本 又來分享一些日常用的小腳本哈,比如說有些小型企業在使用O365時開始用的是O365自帶的域名,過了一段時間後想用自己的域名了,這時候管理員就需要將用戶的UPN修改成自定義域名。總體來說這不是個復雜的活,簡單寫的話可能幾行代碼就搞定了,當然如果想寫的稍微規範些,那麽可以再加上一些邏輯控制類的語句
param ( [parameter(Mandatory = $true)] [string]$CustomDomainName, [parameter(Mandatory = $false)] [bool]$IncludeGlobalAdmin=$false ) function Change-UserPrincipalName { param ( [parameter(Mandatory = $true)] [string]$OldUserPrincipalName, [parameter(Mandatory = $true)] [string]$CustomDomainName ) $Error.clear() try { $Role = Get-MsolUserRole -UserPrincipalName $OldUserPrincipalName $Change = $true if ($Role -ne $null) { #Company Administrator if ($Role.ObjectId -eq "62e90394-69f5-4237-9190-012177145e10") { if ($IncludeGlobalAdmin -eq $false) { Write-Host ("$(Get-Date) * Found {0} {1}, pass" -f $Role.Name, $OldUserPrincipalName) -ForegroundColor 'yellow' $Change = $false } } #Directory Synchronization Account elseif ($Role.ObjectId -eq "d29b2b05-8046-44ba-8758-1e26182fcf32") { Write-Host ("$(Get-Date) * Found {0} {1}, pass" -f $Role.Name, $OldUserPrincipalName) -ForegroundColor 'yellow' $Change = $false } } if ($Change -eq $true) { $UserName = $OldUserPrincipalName.Split("@")[0] $NewUserPrincipalName = $UserName + "@" + $CustomDomainName Write-Host ("$(Get-Date) * Changing user principal name {0} to {1}" -f $OldUserPrincipalName, $NewUserPrincipalName) -ForegroundColor 'Cyan' Set-MsolUserPrincipalName -UserPrincipalName $OldUserPrincipalName -NewUserPrincipalName $NewUserPrincipalName } } catch { Write-Warning $Error[0].Exception.Message } } $Domains = Get-MsolDomain if ($Domains.Name.Tolower().contains($CustomDomainName.ToLower())) { Get-MsolUser -All | %{ Change-UserPrincipalName -OldUserPrincipalName $_.UserPrincipalName -CustomDomainName $CustomDomainName } } else { throw "$(Get-Date) * Domain Name $CustomDomainName not found in your tenant" }
對於Global Admin,腳本裏加了一個bool類型的參數來決定是否要修改Global admin的UPN,這樣對於管理員來說做這種操作的時候可以更可控一些
使用PowerShell 批量修改O365 用戶UPN