Mengotomatiskan Optimalisasi Lisensi dan Audit di Microsoft 365
By Mirko Peters ·
Selamat datang kembali di blog podcast! Jika Anda pernah menatap tagihan bulanan Microsoft 365 dan bertanya-tanya mengapa Anda masih membayar lisensi yang tidak pernah digunakan siapa pun…
Automatically translated with AI from the original post. Read the English original
Selamat datang kembali di blog podcast! Jika Anda pernah menatap tagihan perangkat lunak Microsoft 365 bulanan dan bertanya-tanya mengapa Anda membayar kursi yang tidak tersentuh selama enam bulan, Anda pasti tidak sendirian. Manajemen lisensi adalah salah satu beban operasional tersembunyi yang diam-diam menguras anggaran TI sekaligus menciptakan masalah kepatuhan dan keamanan yang tidak perlu. Untungnya, kita sudah memiliki alat otomatisasi yang ampuh di ujung jari. Dalam panduan komprehensif ini, kita akan membahas cara melacak, menetapkan, dan mencabut lisensi Microsoft 365 menggunakan PowerShell untuk mengendalikan biaya, merampingkan proses onboarding, dan memastikan kepatuhan yang ketat di seluruh penyewa Anda. Jika Anda senang mendalami strategi otomatisasi teknis, pastikan untuk menyimak episode terkait kami tentang cara Run Your Full Stack Locally with .NET Aspire untuk wawasan lebih lanjut tentang alur kerja dan perkakas pengembang.
Pengantar Mengotomatiskan Optimalisasi Lisensi dan Audit
Mengelola penyewa Microsoft 365 secara manual adalah resep untuk kelelahan dan kesalahan manusia. Seiring bertambahnya organisasi, karyawan keluar-masuk, departemen berubah, dan kebutuhan perangkat lunak berfluktuasi tajam. Jika dibiarkan, administrator akhirnya menumpuk lisensi, terus membayar mantan kontraktor, atau membiarkan lisensi E5 premium tetap ditetapkan ke akun yang tidak aktif. Dengan menerapkan otomatisasi dalam strategi optimalisasi lisensi Anda, Anda menghilangkan tebak-tebakan. PowerShell memungkinkan Anda membuat kueri data penyewa, menganalisis pola penggunaan, dan secara terprogram mengambil kembali aset yang tidak terpakai, sehingga tugas administratif yang reaktif berubah menjadi pengaman finansial yang proaktif.
Prasyarat dan Penyiapan Lingkungan
Sebelum menulis satu baris kode pengambilan lisensi, Anda perlu menyiapkan lingkungan Anda. Persiapan yang tepat memastikan skrip Anda berjalan lancar tanpa terhambat masalah izin atau konflik perakitan modul.
Sistem yang Didukung
Anda dapat menjalankan skrip pengelolaan Microsoft 365 di sistem Windows maupun macOS. Sebagian besar administrator lebih memilih Windows 10 atau yang lebih baru, sementara pengguna Mac dapat memanfaatkan PowerShell Core. Pastikan selalu sistem operasi Anda mendukung paket modular terbaru. Jika Anda menemui kesalahan integrasi Web Account Manager (WAM) atau konflik dependensi perakitan saat terhubung ke layanan, penggunaan solusi sementara seperti sakelar DisableWAM dapat membantu skrip Anda tetap berjalan.
Izin dan Peran
Keamanan adalah yang utama. Jangan pernah menjalankan skrip administratif menggunakan akun pengguna standar. Pastikan identitas yang menjalankan skrip memiliki peran yang sesuai, seperti Global Administrator, User Administrator, atau License Administrator. Berpegang pada prinsip hak istimewa minimum memastikan kredensial administratif Anda hanya memiliki izin yang benar-benar diperlukan untuk melakukan audit dan penetapan lisensi.
Daftar Periksa Penyiapan Lingkungan
- Buka Windows PowerShell sebagai administrator.
- Atur PowerShell Gallery sebagai repositori tepercaya:
Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted - Instal penyedia NuGet yang diperlukan jika diminta.
- Konfigurasikan kebijakan eksekusi skrip Anda:
Set-ExecutionPolicy RemoteSigned
Menginstal Modul PowerShell Essential Microsoft 365
Untuk mengelola pengguna dan lisensi secara efektif, Anda perlu memasang perangkat yang tepat di komputer lokal. Ekosistem Microsoft telah beralih secara signifikan ke SDK terpadu, tetapi beberapa modul dasar tetap penting untuk tugas administratif sehari-hari.
Ikhtisar Modul
- Microsoft.Graph: Modul terpadu modern yang menggantikan alat lama seperti MSOnline dan AzureAD.
- ExchangeOnlineManagement: Penting untuk tata kelola kotak surat, konversi kotak surat bersama, dan pelacakan alur surel.
- MicrosoftTeams: Penting untuk mengelola beban kerja kolaborasi dan kebijakan rapat.
Langkah Instalasi
Anda dapat memasang modul inti modern dengan menjalankan perintah berikut di prompt PowerShell yang ditinggikan:
Install-Module -Name Microsoft.Graph -Scope CurrentUser -Force
Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -Force
Install-Module -Name MicrosoftTeams -Scope CurrentUser -ForceSelalu verifikasi instalasi Anda menggunakan Get-InstalledModule untuk memastikan bahwa versi yang bertentangan tidak mengganggu runbook otomatisasi Anda.
Menghubungkan PowerShell ke Penyewa Microsoft 365 Anda
Membangun koneksi yang aman dan andal ke penyewa Anda adalah langkah kritis berikutnya. Standar autentikasi modern memerlukan pendekatan yang kuat, terutama saat menjalankan skrip tanpa pengawasan atau terjadwal.
Opsi Autentikasi
Login interaktif sangat cocok untuk tugas administratif cepat yang bersifat ad-hoc, tetapi skrip otomatis yang berjalan di latar belakang memerlukan alternatif yang lebih aman. Dengan memanfaatkan autentikasi berbasis sertifikat atau identitas terkelola, Anda dapat terhubung secara aman tanpa menanamkan kata sandi secara langsung ke dalam file skrip teks biasa.
Menghubungkan ke Graph dan Layanan
Untuk terhubung ke backend Microsoft Graph guna pengelolaan pengguna dan lisensi, gunakan:
Connect-MgGraph -Scopes "User.ReadWrite.All", "Organization.Read.All"Untuk beban kerja khusus Exchange dan konfigurasi kotak surat, mulailah sesi Anda dengan:
Connect-ExchangeOnlineSetelah skrip Anda selesai menjalankan operasi batch, jangan lupa mengakhiri sesi dengan menjalankan Disconnect-ExchangeOnline atau Disconnect-MgGraph.
Mengaudit Kursi yang Tidak Terpakai dan Inventaris Lisensi
Optimalisasi lisensi dimulai dari visibilitas. Anda tidak dapat mengambil kembali kursi jika tidak tahu siapa yang menggunakannya dan siapa yang sudah tidak memakainya. Dengan PowerShell, Anda dapat membuat laporan inventaris menyeluruh yang merinci SKU yang ditetapkan serta stempel waktu logon terakhir.
Memeriksa Subscribed SKU
Untuk memeriksa total lisensi yang telah dibeli di penyewa Anda dibandingkan jumlah yang masih tersedia, jalankan perintah berikut:
Get-MgSubscribedSku | Select-Object SkuId, SkuPartNumber, @{Name="Total";Expression={$_.ConsolidatedStatus}}, @{Name="Assigned";Expression={$_.AssignedUnits}}Menemukan Pengguna Tidak Aktif
Mengidentifikasi akun yang tidak melakukan autentikasi selama lebih dari 90 hari adalah cara tercepat untuk memangkas pengeluaran cloud yang tidak perlu. Anda dapat menyaring daftar pengguna untuk menemukan akun yang tidak aktif:
$Threshold = (Get-Date).AddDays(-90)
Get-MgGet-MgUser -All -Property Id, DisplayName, UserPrincipalName, SignInActivity | Where-Object { $_.SignInActivity.LastSignInDateTime -lt $Threshold }Mengekspor data ini ke file CSV memungkinkan Anda menyajikan metrik penghematan biaya yang jelas kepada pimpinan TI sebelum menjalankan penghapusan lisensi secara massal.
Menggunakan Set-MgUserLicense untuk Menetapkan dan Mencabut Lisensi
Setelah Anda mengidentifikasi kursi yang kurang dimanfaatkan atau karyawan baru yang perlu di-onboarding, cmdlet Set-MgUserLicense menjadi mekanisme utama Anda untuk melakukan penyesuaian.
Menetapkan Lisensi secara Programatis
Untuk menetapkan SKU produk tertentu kepada pengguna baru, Anda membuat objek penetapan lisensi yang berisi SkuId target:
$Params = @{
AddLicenses = @(
@{
SkuId = "your-sku-guid-here"
}
)
RemoveLicenses = @()
}
Set-MgUserLicense -UserId "alex.johnson@contoso.com" -BodyParameter $ParamsMencabut Lisensi yang Tidak Terpakai
Saat mengambil kembali lisensi dari akun yang tidak aktif atau karyawan yang sudah keluar, Anda membalik operasinya dengan meneruskan pengenal SKU ke parameter array RemoveLicenses, sehingga organisasi Anda segera berhenti membayar kapasitas cloud yang tidak digunakan.
Mengotomatisasi Alur Lisensi Onboarding dan Offboarding
Penyediaan dan penghapusan pengguna secara manual menimbulkan latensi yang signifikan serta risiko keamanan. Dengan membuat skrip alur onboarding dan offboarding, Anda memastikan lisensi disediakan tepat saat karyawan bergabung dan langsung dicabut pada hari ia meninggalkan perusahaan.
Skrip offboarding otomatis dapat menonaktifkan akun pengguna, mencabut lisensi yang ditetapkan, mengubah kotak surat mereka menjadi sumber daya bersama, dan mengekspor jejak audit ke lokasi penyimpanan yang aman, semuanya dalam satu blok eksekusi berkelanjutan. Tingkat sinkronisasi ini menghilangkan pemborosan lisensi dan menjaga postur keamanan organisasi.
Praktik Terbaik Keamanan dan Hak Akses Minimum
Otomatisasi memberikan kekuatan yang sangat besar, sehingga harus diatur dengan ketat. Mematuhi prinsip keamanan yang ketat melindungi penyewa Anda dari kesalahan konfigurasi yang tidak disengaja dan eksekusi skrip berbahaya.
- Akses Hak Minimum: Jangan pernah memberikan hak Global Administrator kepada akun layanan otomatis. Batasi izin secara ketat sesuai dengan apa yang benar-benar dibutuhkan skrip.
- Keamanan Kredensial: Jangan pernah menyimpan kata sandi teks biasa di dalam skrip. Gunakan Azure Key Vault, identitas terkelola, atau autentikasi sertifikat.
- Pencatatan Menyeluruh: Terapkan blok try/catch yang andal dan catat langkah eksekusi skrip ke log lokal atau cloud untuk ketertelusuran yang lengkap.
Mengatasi Kesalahan Umum Lisensi dan Koneksi
Bahkan administrator berpengalaman pun kadang terbentur kendala saat menjalankan skrip otomatisasi Microsoft 365. Memahami cara menangani kesalahan ini akan menghemat waktu berjam-jam.
- Kesalahan Izin Ditolak: Pastikan akun yang menjalankan skrip memiliki peran direktori Azure AD yang diperlukan dan koneksi Graph Anda meminta cakupan persetujuan (consent scope) yang benar.
- Kegagalan Penetapan Lisensi: Pastikan pengguna target memiliki "Lokasi Penggunaan" yang telah dikonfigurasi. Microsoft 365 akan menolak penetapan lisensi jika lokasi negara pengguna kosong.
- Konflik Modul: Jika cmdlet gagal karena versi modul yang berbenturan, hapus sepenuhnya modul lama (seperti MSOnline) dan standarkan lingkungan Anda pada Microsoft Graph SDK yang modern.
Kesimpulan
Mengotomatisasi optimalisasi lisensi dan audit di Microsoft 365 menjembatani kesenjangan antara pengelolaan TI yang efisien dan manajemen keuangan yang cerdas. Dengan memanfaatkan PowerShell dan cmdlet seperti Set-MgUserLicense, Anda dapat memberantas pemborosan biaya perangkat lunak, menerapkan kepatuhan keamanan yang ketat, dan menyederhanakan alur kerja administrasi pengguna di seluruh perusahaan Anda. Jika Anda ingin memperluas wawasan teknis Anda lebih jauh lagi ke alat dan manajemen infrastruktur modern, jangan lewatkan episode terkait kami tentang cara Run Your Full Stack Locally with .NET Aspire. Tetap proaktif, jaga keamanan skrip Anda, dan ubah penyewa Microsoft 365 Anda menjadi mesin yang berjalan lancar dan hemat biaya!