Cách gán giấy phép Microsoft 365 với PowerShell
Bạn có thể gán giấy phép theo cách thủ công cho một hoặc nhiều người dùng trong trung tâm quản trị Microsoft 365 hoặc trung tâm quản trị Microsoft Entra. Nếu bạn muốn gán giấy phép cho nhiều người dùng, bạn nên tạo tệp CSV và sử dụng tập lệnh PowerShell sẽ nhanh hơn. Trong bài viết này, bạn sẽ tìm hiểu cách gán giấy phép người dùng trong Microsoft Entra ID và Microsoft Graph PowerShell.
Giấy phép người dùng Microsoft 365
Mỗi tổ chức sở hữu các sản phẩm Microsoft 365 khác nhau, trong đó một sản phẩm có thể chứa giấy phép từ nhiều đăng ký. Để gán giấy phép cho người dùng của bạn, bạn cần chọn sản phẩm Microsoft 365 (ví dụ: Nhà phát triển Microsoft 365 E5).
Bạn có thể gán giấy phép Microsoft cho người dùng theo nhiều cách khác nhau:
- Trung tâm quản trị Microsoft 365
- Trung tâm quản trị Microsoft Entra
- Microsoft Graph PowerShell
Chúng tôi sẽ chỉ hướng dẫn bạn cách gán giấy phép cho người dùng trong trung tâm quản trị Microsoft Entra và PowerShell. Điều này là do trung tâm quản trị Microsoft 365 có những hạn chế trong đó bạn có thể chỉ định tối đa 20 người dùng cùng một lúc.
Cách gán giấy phép Microsoft 365 trong Microsoft Entra ID
Để gán giấy phép Microsoft 365 trong Microsoft Entra ID cho một người dùng hoặc nhiều người dùng trong Microsoft Entra ID, hãy làm theo các bước bên dưới.
Gán giấy phép Microsoft 365 cho một người dùng trong Microsoft Entra ID
Gán giấy phép Microsoft 365 cho người dùng trong Microsoft Entra ID, làm theo các bước sau:
- Đăng nhập vào trung tâm quản trị Microsoft Entra
- Mở rộng Danh tính > Người dùng > Tất cả người dùng
- Chọn người dùng
- Nhấp vào Giấy phép ở ngăn bên trái hoặc ở dưới cùng
- Nhấp vào Bài tập
- Chọn giấy phép
- Chọn tùy chọn giấy phép
- Nhấp vào Lưu
Lưu ý: Trước khi có thể chỉ định giấy phép cho người dùng, bạn phải chỉ định Vị trí sử dụng. Nếu không, việc chuyển nhượng giấy phép không thành công cho người dùng.
- Việc chuyển nhượng giấy phép cho thành viên (Amanda Morgan) đã thành công và Trạng thái là Hoạt động
Gán giấy phép Microsoft 365 cho nhiều người dùng trong Microsoft Entra ID
Để gán giấy phép Microsoft 365 cho người dùng hàng loạt, hãy làm theo các bước dưới đây:
- Đăng nhập vào trung tâm quản trị Microsoft Entra
- Mở rộng Danh tính > Hiển thị thêm
- Mở rộng Thanh toán > Giấy phép
- Nhấp vào Tất cả sản phẩm
- Chọn gói cấp phép
- Nhấp vào Gán
- Nhấp vào Thêm người dùng và nhóm
- Nhấp vào Người dùng
- Chọn người dùng
- Nhấp vào Chọn
- Kiểm tra người dùng trong danh sách
- Nhấp vào Tùy chọn bài tập ở trên cùng hoặc dưới cùng
- Kiểm tra xem bạn có muốn bật tất cả các tùy chọn không
- Nhấp vào Xem lại + giao ở trên cùng hoặc dưới cùng
- Kiểm tra mọi thứ
- Nhấp vào Gán
- Việc chuyển nhượng giấy phép đã được gán thành công cho nhiều người dùng
Nếu bạn muốn gán giấy phép Microsoft 365 cho nhiều người dùng, tốt nhất bạn nên tạo nhóm. Tìm hiểu cách Gán giấy phép Microsoft 365 với cấp phép dựa trên nhóm.
Cách gán giấy phép Microsoft 365 bằng PowerShell
Để gán giấy phép Microsoft 365 cho một người dùng hoặc nhiều người dùng bằng Microsoft Graph PowerShell, hãy làm theo các bước dưới đây.
Kết nối với Microsoft Graph PowerShell
Trước khi bắt đầu, bạn phải Cài đặt mô-đun Microsoft Graph PowerShell. Khởi động Windows PowerShell với tư cách quản trị viên và chạy lệnh bên dưới.
Install-Module Microsoft.Graph -ForceQuan trọng: Luôn cài đặt phiên bản mô-đun Microsoft Graph PowerShell mới nhất trước khi bạn chạy lệnh ghép ngắn hoặc tập lệnh để tránh lỗi và kết quả không chính xác.
Chạy lệnh ghép ngắn Connect-MgGraph với phạm vi bên dưới để xác thực bằng Microsoft Graph.
Connect-MgGraph -Scopes "User.ReadWrite.All", "Organization.Read.All"Bây giờ bạn đã thiết lập xong, bạn có thể sử dụng các lệnh với MS Graph PowerShell.
Nhận giấy phép ID SKU
Để gán giấy phép cho nhiều người dùng bằng Microsoft Graph PowerShell, bạn cần biết ID SKU của giấy phép. Chúng tôi sẽ sử dụng lệnh ghép ngắn Get-MgSubscribeSku PowerShell để lấy SkuPartNumber hiển thị các gói cấp phép có sẵn cho tổ chức của bạn. Ví dụ: ENTERPRISEPACK là tên gói cấp phép cho Office 365 Enterprise E3.
Chạy lệnh PowerShell bên dưới để nhận ID SKU của tất cả các giấy phép trong tổ chức của bạn.
Get-MgSubscribedSku | Select-Object SkuPartNumber, SkuIdKết quả đầu ra của PowerShell hiển thị danh sách các giấy phép ID SKU.
SkuPartNumber SkuId
------------- -----
DEVELOPERPACK_E5 c42b9cae-ea4f-4ab7-9717-81576235ccacNhận người dùng không có giấy phép
Để tìm tất cả tài khoản người dùng không được cấp phép trong tổ chức của bạn, bạn cần sử dụng lệnh ghép ngắn Get-MgUser.
Chạy lệnh PowerShell bên dưới để nhận tất cả người dùng không có giấy phép, ngoại trừ khách.
Get-MgUser -All -Filter "assignedLicenses/`$count eq 0 and userType eq 'Member'" -ConsistencyLevel eventual -CountVariable unlicensedUserCountNó sẽ hiển thị danh sách tất cả các tài khoản người dùng không được cấp phép.
Gán giấy phép Microsoft 365 cho một người dùng bằng Microsoft Graph PowerShell
Để gán giấy phép cho một người dùng cụ thể, bạn sẽ sử dụng lệnh ghép ngắn Set-MgUserLicene PowerShell. Trong ví dụ của chúng tôi, chúng tôi muốn gán cho người dùng Amanda Morgan giấy phép DEVELOPERPACK_E5.
Lưu ý: Bạn phải thêm tham số -RemoveLicens bằng một mảng trống @() ngay cả khi bạn không muốn xóa bất kỳ giấy phép nào.
- Chỉ định ID SKU giấy phép ở dòng 1
- Chỉ định UserPrincipalName ở dòng 2
- Chạy tập lệnh PowerShell bên dưới
$license = Get-MgSubscribedSku | Where-Object { $_.SkuPartNumber -eq "DEVELOPERPACK_E5" }
$user = Get-MgUser | Where-Object { $_.UserPrincipalName -eq "Amanda.Morgan@m365info.com" }
Set-MgUserLicense -UserId $user.Id -AddLicenses @{SkuId = ($license.SkuId) } -RemoveLicenses @()Đầu ra PowerShell cho thấy giấy phép đã được gán cho người dùng này.
DisplayName Id Mail UserPrincipalName
----------- -- ---- -----------------
Amanda Morgan f8261d51-3df9-4f21-a6b1-533412669c11 Amanda.Morgan@m365info.com Amanda.Morgan@m365info.comGán giấy phép Microsoft 365 cho nhiều người dùng bằng Microsoft Graph PowerShell
Để gán giấy phép Microsoft 365 cho nhiều người dùng, hãy sử dụng tập lệnh PowerShell bên dưới:
- Chỉ định UserPrincipalName của người dùng ở dòng 2
- Chỉ định ID SKU giấy phép trong dòng 5
- Chạy tập lệnh PowerShell bên dưới
$users = @(
"amanda.hansen@m365info.com",
"amanda.morgan@m365info.com"
)
$license = Get-MgSubscribedSku | Where-Object { $_.SkuPartNumber -eq "DEVELOPERPACK_E5" }
foreach ($user in $users) {
$user = Get-MgUser -Filter "UserPrincipalName eq '$user'"
try {
$userLicense = Get-MgUserLicenseDetail -UserId $user.Id | Where-Object { $_.SkuId -eq $license.SkuId }
if ($userLicense) {
Write-Host "License $($license.SkuPartNumber) is already assigned to $($user.DisplayName)" -ForegroundColor Yellow
}
else {
Write-Host "Assign license $($license.SkuPartNumber) to $($user.DisplayName)" -ForegroundColor Green
$null = Set-MgUserLicense -UserId $user.Id -AddLicenses @{SkuId = ($license.SkuId) } -RemoveLicenses @() -ErrorAction Stop
}
}
catch {
Write-Host "An error occurred: $($_.Exception.Message)" -ForegroundColor Red
break
}
}Đầu ra PowerShell hiển thị khi:
- Giấy phép đã được chỉ định cho người dùng
- Gán giấy phép cho người dùng
Tập lệnh PowerShell sẽ dừng khi:
- Người dùng không có giá trị Vị trí sử dụng
- Không còn giấy phép nào nữa (đã đạt đến giới hạn tối đa)
- Người dùng không tồn tại hoặc bị sai chính tả
Nó hiển thị ví dụ về kết quả PowerShell bên dưới.
Assign license DEVELOPERPACK_E5 to Amanda Hansen
License DEVELOPERPACK_E5 is already assigned to Amanda MorganBạn cũng có thể chỉ định một nhóm người dùng bằng lệnh ghép ngắn Get-MgUser, như trong ví dụ bên dưới.
- Chỉ định người dùng ở dòng 1
- Chỉ định ID SKU giấy phép ở dòng 2
- Chạy tập lệnh PowerShell bên dưới
$users = Get-MgUser -All | Where-Object { $_.Mail -match "@m365info.com" }
$license = Get-MgSubscribedSku | Where-Object { $_.SkuPartNumber -eq "DEVELOPERPACK_E5" }
foreach ($user in $users) {
try {
$userLicense = Get-MgUserLicenseDetail -UserId $user.Id | Where-Object { $_.SkuId -eq $license.SkuId }
if ($userLicense) {
Write-Host "License $($license.SkuPartNumber) is already assigned to $($user.DisplayName)" -ForegroundColor Yellow
}
else {
Write-Host "Assign license $($license.SkuPartNumber) to $($user.DisplayName)" -ForegroundColor Green
$null = Set-MgUserLicense -UserId $user.Id -AddLicenses @{SkuId = ($license.SkuId) } -RemoveLicenses @() -ErrorAction Stop
}
}
catch {
Write-Host "An error occurred: $($_.Exception.Message)" -ForegroundColor Red
break
}
}Đầu ra PowerShell hiển thị khi:
- Giấy phép đã được cấp cho một người dùng
- Gán giấy phép cho người dùng
Tập lệnh PowerShell sẽ dừng khi:
- Người dùng không có giá trị Vị trí sử dụng
- Không còn giấy phép nào nữa (đã đạt đến giới hạn tối đa)
Nó hiển thị ví dụ PowerShell bên dưới.
License DEVELOPERPACK_E5 is already assigned to Amanda Hansen
License DEVELOPERPACK_E5 is already assigned to Amanda Morgan
Assign license DEVELOPERPACK_E5 to Blake Martin
Assign license DEVELOPERPACK_E5 to Carl Hawk
An error occurred: [Request_BadRequest] : Subscription with SKU c42b9cae-ea4f-4ab7-9717-81576235ccac does not have any available licenses.Gán giấy phép Microsoft 365 cho người dùng hàng loạt từ tệp CSV trong PowerShell
Bạn cũng có thể tạo tệp CSV với những người dùng không được cấp phép trong một cột và sử dụng tập lệnh PowerShell để gán giấy phép Microsoft 365.
Để gán hàng loạt giấy phép Microsoft 365 cho người dùng, hãy làm theo các bước dưới đây:
- Mở Microsoft Excel
- Nhập ID làm tiêu đề của cột đầu tiên
- Chỉ định UserPrincipalName
- Tạo thư mục tạm thời nếu bạn chưa có nó trong ổ (C:)
- Đặt tên tệp Users.csv
- Lưu dưới dạng loại CSV (Được phân cách bằng dấu phẩy (*.csv)
- Nhấp vào Lưu
- Nhập đường dẫn tệp CSV vào dòng 1
- Chỉ định ID SKU giấy phép ở dòng 2
- Chạy tập lệnh PowerShell bên dưới
$Users = Import-Csv "C:\temp\Users.csv"
$license = Get-MgSubscribedSku | Where-Object { $_.SkuPartNumber -eq "DEVELOPERPACK_E5" }
foreach ($user in $users) {
$userId = $user.Id
$userObject = Get-MgUser -Filter "UserPrincipalName eq '$($user.Id)'"
if ($userObject) {
try {
$userLicense = Get-MgUserLicenseDetail -UserId $userObject.Id | Where-Object { $_.SkuId -eq $license.SkuId }
if ($userLicense) {
Write-Host "License $($license.SkuPartNumber) is already assigned to $($userObject.DisplayName)" -ForegroundColor Yellow
}
else {
Write-Host "Assign license $($license.SkuPartNumber) to $($userObject.DisplayName)" -ForegroundColor Green
$null = Set-MgUserLicense -UserId $userObject.Id -AddLicenses @{SkuId = ($license.SkuId) } -RemoveLicenses @() -ErrorAction Stop
}
}
catch {
Write-Host "An error occurred: $($_.Exception.Message)" -ForegroundColor Red
break
}
}
else {
Write-Host "User $userId does not exist" -ForegroundColor Red
}
}Đầu ra PowerShell hiển thị khi:
- Giấy phép đã được cấp cho một người dùng
- Gán giấy phép cho người dùng
- Người dùng không tồn tại hoặc bị sai chính tả
Tập lệnh PowerShell sẽ dừng khi:
- Người dùng không có giá trị Vị trí sử dụng
- Không còn giấy phép nào nữa (đã đạt đến giới hạn tối đa)
Assign license DEVELOPERPACK_E5 to Anne Butler
License DEVELOPERPACK_E5 is already assigned to Anna Bell
License DEVELOPERPACK_E5 is already assigned to Frank Olsen
User Unknown@m365info.com does not exist
License DEVELOPERPACK_E5 is already assigned to Ken Walker
Assign license DEVELOPERPACK_E5 to Stephen Hunter
An error occurred: [Request_BadRequest] : License assignment cannot be done for user with invalid usage location.Đó là nó!
Đọc thêm: Thay đổi địa chỉ SMTP chính của Microsoft 365 »
Phần kết luận
Bạn đã tìm hiểu cách gán giấy phép Microsoft 365 trong Microsoft Graph PowerShell và Microsoft Entra ID. Với cả hai phương pháp, có thể chỉ định giấy phép cho một người dùng và nhiều người dùng. Có nhiều biến thể mà bạn có thể làm việc với PowerShell để gán giấy phép Microsoft 365 cho nhiều người dùng.
bạn có thích bài viết này? Bạn cũng có thể thích Nhập hàng loạt liên hệ vào Microsoft 365 bằng PowerShell. Đừng quên theo dõi chúng tôi và chia sẻ bài viết này.
















