この記事では、互換性モードを使用して Microsoft Entra PowerShell でレガシ Azure AD PowerShell スクリプトを実行し、最小限の変更でシームレスなスクリプト移行を可能にする方法について説明します。 このプロセスにより、既存の自動化ワークフローを維持しながら、新しいモジュールにスムーズに移行でき、更新されたツールに対する継続的な効率とコンプライアンスが確保されます。
Microsoft Entra PowerShell は、Azure AD PowerShell モジュールとの 98% 以上の互換性を持っています。 互換モードでは、Enable-EntraAzureADAlias コマンドを使用して、Microsoft Entra PowerShell を使用して、既存の Azure AD PowerShell スクリプトを最小限の変更で実行できます。 Microsoft Entra PowerShell で Azure AD PowerShell および MSOnline のコマンドレットに対応するコマンドレットを見つけるには、Azure AD PowerShell から Microsoft Entra PowerShell へのコマンドレット対応表を使用します。
Enable-EntraAzureADAlias で互換モードを使用する
Enable-EntraAzureADAlias コマンドレットは、エイリアスを使用して互換モードを有効にします。 既定では、Enable-EntraAzureADAliasは現在の Microsoft Entra PowerShell セッションの互換性エイリアスのみを有効にします。 詳細については、 Enable-EntraAzureADAlias リファレンス ドキュメントを参照してください。
Microsoft Entra PowerShell を既存の AzureAD PowerShell スクリプトで使用するには、Connect-AzureAD コマンドを指定された 3 行に置き換えます。 この 3 行は、移行された AzureAD PowerShell スクリプトの先頭です。
Import-Module -Name Microsoft.Entra.Applications
Connect-Entra -Scopes 'Application.Read.All' #Replaces Connect-AzureAD for auth
Enable-EntraAzureADAlias #enable aliasing
Get-AzureADApplication -Top 2
Example
この例では、期限切れのシークレットを含むアプリを PowerShell Microsoft Entra使用してエクスポートするスクリプトを実行します。 この例では、Microsoft Entra PowerShell モジュールが既にインストールされていることを前提としています。
次のサンプル スクリプトは、元の AzureAD PowerShell スクリプトです。
Connect-AzureAD
$applications = Get-AzureADApplication -All $true
$Logs = @()
Write-Host "I would like to see the Applications with the Secrets and Certificates that expire in the next X amount of Days? <<Replace X with the number of days. The answer should be ONLY in Numbers>>" -ForegroundColor Green
$Days = Read-Host
Write-Host "Would you like to see Applications with already expired secrets or certificates as well? <<Answer with [Yes] [No]>>" -ForegroundColor Green
$alreadyExpired = Read-Host
$now = Get-Date
foreach ($app in $applications) {
$appName = $app.DisplayName
$appID = $app.objectid
$applID = $app.AppId
$appCreds = Get-AzureADApplication -ObjectId $appID | Select-Object -Property PasswordCredentials, KeyCredentials
$secret = $appCreds.PasswordCredentials
$cert = $appCreds.KeyCredentials
注: このコード スニペットは、読みやすくするために短縮されています。 詳細については、 完全なサンプルを参照してください。
Microsoft Entra PowerShell モジュールでスクリプトを使用するには、Connect-AzureAD コマンドレットをスニペットに記載されている 3 行に置き換えます。 スクリプト全体を書き直す必要はありません。
次のスクリプトは、移行されたスクリプトです。
Import-Module -Name Microsoft.Entra.Users
Connect-Entra #Replaces Connect-AzureAD for auth
Enable-EntraAzureADAlias #Activate aliasing
$applications = Get-AzureADApplication -All $true
$logs = @()
Write-Host "I would like to see the Applications with the Secrets and Certificates that expire in the next X amount of Days? <<Replace X with the number of days. The answer should be ONLY in Numbers>>" -ForegroundColor Green
$days = Read-Host
Write-Host "Would you like to see Applications with already expired secrets or certificates as well? <<Answer with [Yes] [No]>>" -ForegroundColor Green
$alreadyExpired = Read-Host
$now = Get-Date
foreach ($app in $applications) {
$appName = $app.DisplayName
$appID = $app.Objectid
$applID = $app.AppId
$appCreds = Get-AzureADApplication -ObjectId $appID | Select-Object -Property PasswordCredentials, KeyCredentials
$secret = $appCreds.PasswordCredentials
$cert = $appCreds.KeyCredentials
注: このコード スニペットは、読みやすくするために短縮されています。 詳細については、 完全に変更されたサンプルを参照してください。
Test-EntraScript コマンドとの互換性をテストする
Test-EntraScript コマンドレットは、Azure AD PowerShell コマンドを含むスクリプトが Microsoft Entra PowerShell モジュールで動作するかどうかを確認します。 互換性の問題がある場合は、行番号、問題の種類、互換性のないコマンド、および特定のコード スニペットを含む、それらを一覧表示します。
既知の問題
Azure AD PowerShell モジュールから Microsoft Entra PowerShell に移行すると、いくつかの既知の問題が発生する可能性があります。
- パラメーター
-Filterが正しく機能しない可能性があります。 - パラメーター
-SearchStringが正しく機能しない可能性があります。 - 出力オブジェクトは、AzureAD 出力オブジェクトと若干異なる場合があります。