微軟真的家大業大,用 PowerShell 管理 Azure AD 使用者資訊竟然已經累積出了 4 套完全不一樣的 Cmdlets 模組,其中最建議使用的 Microsoft Graph PowerShell 真的是無敵難用到爆,但安全性高、速度快是其優點。本篇文章我就整理一下我近期常用的一些 Cmdlet 命令,方便日後透過 PowerShell 管理公司內部的使用者資訊。
登入
# 先設定登入的帳號密碼
$Credential = Get-Credential -Message "Login" -UserName "user@example.com"
# 連接 Azure Active Directory PowerShell for Graph
# Import-Module AzureAD
Connect-AzureAD -Credential $Credential
# 連接 MSOnline V1 PowerShell module for Azure Active Directory
# Install-Module MSOnline
# Import-Module MSOnline
Connect-MsolService -Credential $Credential
# 連接 Exchange Online PowerShell V3
# Install-Module -Name ExchangeOnlineManagement
# Import-Module -Name ExchangeOnlineManagement
Connect-ExchangeOnline -Credential $Credential
# 連接 Microsoft Graph PowerShell
# Install-Module -Name Microsoft.Graph
Connect-MgGraph -TenantId "$TenantId"
MSOnline V1 PowerShell module for Azure Active Directory
-
取得所有使用者
$users = Get-MsolUser -All
-
取得特定部門下所有使用者
$users = Get-MsolUser -All | Where-Object { $_.Department -eq "專案研發一部" }
$users = Get-MsolUser -All | Where-Object { $_.Department -eq "專案研發一部" -or $_.Department -eq "專案研發二部" -or $_.Department -eq "營運管理部" }
-
取得不在特定部門下所有使用者
$users = Get-MsolUser -All | Where-Object { $_.Department -ne "專案研發一部" -and $_.Department -ne "專案研發二部" -and $_.Department -ne "營運管理部" }
-
將使用者匯出成 CSV 檔
$users | select DisplayName,UserPrincipalName,Department | Sort-Object { $_.Department } | Export-Csv -Path "g:\export.csv" -NoTypeInformation -NoClobber -Encoding utf8
-
建立 M365 帳號並指派授權
New-MsolUser -UserPrincipalName $UserPrincipalName -DisplayName $DisplayName -FirstName $FirstName -LastName $LastName -UsageLocation $UsageLocation -LicenseAssignment $LicenseAssignment -MobilePhone $MobilePhone -Office $Office -PhoneNumber $PhoneNumber -PreferredLanguage $PreferredLanguage -State $State -StreetAddress $StreetAddress -Title $Title -AlternateEmailAddresses $AlternateEmailAddresses -Country $Country -PostalCode $PostalCode -City $City -Department $Department -Fax $Fax
-
重設使用者密碼
Set-MsolUserPassword -UserPrincipalName "$UserPrincipalName" -NewPassword "$PlainPassword" -ForceChangePassword $true
-
設定使用者顯示名稱
Set-MsolUser -UserPrincipalName "$UserPrincipalName" -DisplayName ("$LastName" + "$FirstName" + "$EngName")
-
設定使用者所屬部門
Set-MsolUser -UserPrincipalName "user@example.com" -Department "專案研發二部"
Azure Active Directory PowerShell for Graph
-
取得所有使用者
$users = Get-AzureADUser -All $true
-
取得特定部門下所有使用者
$users = Get-AzureADUser -Filter "department eq '專案研發一部'"
$users = Get-AzureADUser -Filter "department eq '專案研發一部' or department eq '專案研發二部' or department eq '營運管理部'"
-
取得員工的直屬主管名稱
$users | foreach {
$employee = $_
$manager = Get-AzureADUserManager -ObjectId $_.ObjectId
$employee.DisplayName + "`t主管是 " + $manager.DisplayName
}
Microsoft Graph PowerShell
-
找出特定 Cmdlet 需要哪些 OAuth 2.0 Scope 權限
Find-MgGraphCommand -command "Get-MgUser" | Select -First 1 -ExpandProperty Permissions
-
取得所有使用者清單
Connect-MgGraph -Scopes 'User.Read.All'
$users = Get-MgUser -All
-
列出所有使用者基本資訊(含信箱地址)
$users | Format-List ID, DisplayName, Mail, UserPrincipalName
Exchange Online PowerShell V3
-
設定直屬主管
$User = "tom"
$Manager = "will"
Set-User "$UserName" -Company "$CompanyName" -Manager "$Manager" -Confirm:$false
-
設定中斷 Exchange Online PowerShell 的 Session
Disconnect-ExchangeOnline -Confirm:$false
相關連結
-
MSOnline V1 PowerShell module for Azure Active Directory
-
Azure Active Directory V2 PowerShell
-
Microsoft Graph PowerShell v1.0
-
Exchange Online PowerShell V3 (EXO V3)