New-EntraApplication

在 Microsoft Entra ID 中建立新的應用程式註冊。

語法

CreateApplication (預設值)

New-EntraApplication
    -DisplayName <String>
    [-SignInAudience <String>]
    [-IdentifierUris <List[String]>]
    [-IsDeviceOnlyAuthSupported <Boolean>]
    [-IsFallbackPublicClient <Boolean>]
    [-AppRoles <List[MicrosoftGraphAppRole]>]
    [-RequiredResourceAccess <MicrosoftGraphRequiredResourceAccess[]>]
    [-Api <MicrosoftGraphApiApplication>]
    [-PublicClient <MicrosoftGraphPublicClientApplication>]
    [-Web <MicrosoftGraphWebApplication>]
    [-InformationalUrl <MicrosoftGraphInformationalUrl>]
    [-ParentalControlSettings <MicrosoftGraphParentalControlSettings>]
    [-OptionalClaims <MicrosoftGraphOptionalClaims>]
    [-AddIns <Object[]>]
    [-KeyCredentials <Object[]>]
    [-PasswordCredentials <MicrosoftGraphPasswordCredential[]>]
    [-Tags <List[String]>]
    [-GroupMembershipClaims <String>]
    [-TokenEncryptionKeyId <String>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

CreateWithAdditionalProperties

New-EntraApplication
    -AdditionalProperties <Hashtable>
    [-DisplayName <String>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

該指令小程式會在 New-EntraApplication Microsoft Entra ID 中建立新的應用程式註冊。 應用程式可設定為不同認證情境,包括單租戶或多租戶,並可使用多種憑證類型。

範例

範例 1:建立一個基本應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'
New-EntraApplication -DisplayName 'Contoso HR App'
DisplayName               Id                                   AppId                                SignInAudience PublisherDomain
-----------               --                                   -----                                -------------- ---------------
Contoso HR Onboarding App dddd3333-ee44-5555-66ff-777777aaaaaa 22223333-cccc-4444-dddd-5555eeee6666 AzureADMyOrg   contoso.com

此指令建立一個基本的應用程式註冊,並設定為預設。

範例 2:建立多租戶應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'
New-EntraApplication -DisplayName 'Contoso Partner API' -SignInAudience 'AzureADMultipleOrgs'
DisplayName               Id                                   AppId                                SignInAudience PublisherDomain
-----------               --                                   -----                                -------------- ---------------
Contoso Partner API   dddd3333-ee44-5555-66ff-777777aaaaaa 22223333-cccc-4444-dddd-5555eeee6666 AzureADMyOrg   contoso.com

此指令建立一個應用程式,任何 Microsoft Entra ID 租戶的帳號都能使用。

範例 3:建立一個應用程式,使用應用程式密碼(用戶端秘密)

Connect-Entra -Scopes 'Application.ReadWrite.All'
$passwordCred = [Microsoft.Graph.PowerShell.Models.MicrosoftGraphPasswordCredential]@{
    DisplayName = 'AI automation Cred'
    StartDateTime = [DateTime]::UtcNow
    EndDateTime = [DateTime]::UtcNow.AddYears(1)
}

$app = New-EntraApplication -DisplayName 'Contoso Automation App' -PasswordCredentials @($passwordCred)
$app.PasswordCredentials.SecretText

此指令建立一個帶有密碼憑證(用戶端秘密)的應用程式。 秘密值會在回應中回傳。

範例 4:建立具有 API 權限的應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'
$msGraphAccess = @{
    ResourceAppId = "00000003-0000-0000-c000-000000000000"  # Microsoft Graph
    ResourceAccess = @(
        @{
            Id = "e1fe6dd8-ba31-4d61-89e7-88639da4683d"  # User.Read
            Type = "Scope"
        },
        @{
            Id = "df021288-bdef-4463-88db-98f22de89214"  # User.ReadWrite.All
            Type = "Role"
        }
    )
}

New-EntraApplication -DisplayName "User Management App" -RequiredResourceAccess @($msGraphAccess)

此指令建立一個具有指定 Microsoft 圖形 API 權限的應用程式。

範例 5:建立帶有外掛細節的應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'
$addIn = @{
    Id         = "00000002-0000-0ff1-ce00-000000000000"  # Outlook's service principal ID
    Type       = "messageReadCommandSurface"          # UI surface
    Properties = @(
        @{ Key = "extensionId"; Value = "Contoso.EmailInsights" },
        @{ Key = "sourceLocation"; Value = "https://contoso.com/addin/home.html" },
        @{ Key = "supportedLocales"; Value = "en-US" }
    )
}

New-EntraApplication -DisplayName "Contoso Email Insights" -AddIns $addIn

此範例將 Contoso Email Insights 外掛註冊為 Microsoft Entra ID,使其能與 Outlook on the Web 整合,並可側載或透過 AppSource 發布。

範例 6:建立應用程式角色

Connect-Entra -Scopes 'Application.ReadWrite.All'
$appRoles = @(
    @{
        id = [Guid]::NewGuid()
        allowedMemberTypes = @("User", "Application")
        description = "Read-only access to HR data"
        displayName = "HR Reader"
        isEnabled = $true
        value = "HRReader"
        origin = "Application"
    },
    @{
        id = [Guid]::NewGuid()
        allowedMemberTypes = @("User", "Application")
        description = "Manage HR data"
        displayName = "HR Manager"
        isEnabled = $true
        value = "HRManager"
        origin = "Application"
    }
)

# Create the new application registration with AppRoles
New-EntraApplication -DisplayName "Contoso Sandbox" -AppRoles $appRoles

此範例註冊了一個多 Contoso Sandbox 租戶 API,並定義了兩個自訂角色: HRReader 用於 read-only 存取權限與 HRManager 用於 full access 員工資料。

範例 7:建立帶有識別碼 URI 的網頁應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'
New-EntraApplication -DisplayName 'Contoso App' -IdentifierUris 'https://myselfserve.contoso.com'

此指令建立一個帶有識別碼 URI 的應用程式。

範例 8:使用 AdditionalProperties 建立應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'
$props = @{
    displayName = "Advanced Configuration App"
    signInAudience = "AzureADMyOrg"
    api = @{
        oauth2PermissionScopes = @(
            @{
                id = [Guid]::NewGuid().ToString("D")
                adminConsentDescription = "Allow the app to access resources on user's behalf"
                adminConsentDisplayName = "Access resources"
                isEnabled = $true
                type = "Admin"
                value = "access"
            }
        )
    }
}

New-EntraApplication -AdditionalProperties $props

此指令使用 AdditionalProperties 參數建立一個用於進階設定的應用程式。

範例 9:建立帶有標籤細節的應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'
New-EntraApplication -DisplayName "Contoso Tagged App" `
    -SignInAudience "AzureADMultipleOrgs" `
    -Tags @(
        "WindowsAzureActiveDirectoryIntegratedApp",
        "HideApp",
        "CertifiedApp"
    )

此範例建立多租戶企業應用程式,並新增標籤以支援 Microsoft Partner Center 的發現與管理員同意過濾。

範例 10:建立公開客戶端應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'

# Define the PublicClient object with redirect URIs
$publicClient = @{
    redirectUris = @("https://login.microsoftonline.com/common/oauth2/nativeclient")
}

New-EntraApplication -DisplayName "Contoso PowerShell Client" `
    -SignInAudience "AzureADMyOrg" `
    -PublicClient $publicClient

此範例展示了如何以重定向 URI 註冊公開客戶端應用程式以進行本地測試,例如用於 Android 或 iOS 應用程式,這些應用程式需互動式驗證使用者。

範例 11:建立帶有自訂範圍的應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'

# Define custom scopes for the API
$api = @{
    oauth2PermissionScopes = @(
        @{
            id = [Guid]::NewGuid()
            adminConsentDescription = "Allow the app to read user profiles."
            adminConsentDisplayName = "Read user profiles"
            isEnabled = $true
            type = "User"
            value = "Employee.Read"
        },
        @{
            id = [Guid]::NewGuid()
            adminConsentDescription = "Allow the app to write user profiles."
            adminConsentDisplayName = "Write user profiles"
            isEnabled = $true
            type = "User"
            value = "Employee.Write"
        }
    )
}

New-EntraApplication -DisplayName "Contoso API App" -Api $api

此範例展示了如何註冊應用程式並利用 -Api 參數定義其可用權限。

範例 12:建立帶有 RequiredResourceAccess 細節的應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'
# Define the RequiredResourceAccess for Microsoft Graph API
$graphResourceAccess = @{
    ResourceAppId = '00000003-0000-0000-c000-000000000000'  # Microsoft Graph API AppID
    ResourceAccess = @(
        @{
            Id = 'e1fe6dd8-ba31-4d61-89e7-88639da4683d'  # GUID for 'User.Read' permission
            Type = 'Scope'  # Type of permission
        }
    )
}

# Define the RequiredResourceAccess for Azure Service Management API
$serviceManagementResourceAccess = @{
    ResourceAppId = '797f4846-ba00-4fd7-ba43-dac1f8f63013'  # Azure Service Management API ID
    ResourceAccess = @(
        @{
            Id = '41094075-9dad-400e-a0bd-54e686782033'  # GUID for 'user_impersonation'
            Type = 'Scope'  # Type of permission
        }
    )
}

# Combine both resource accesses into an array
$RequiredResourceAccess = @($graphResourceAccess, $serviceManagementResourceAccess)

# Create a new application with the required resource access
New-EntraApplication -DisplayName 'Contoso Service App' -RequiredResourceAccess $RequiredResourceAccess

此範例建立一個名為 Contoso Service App 的新應用程式,並透過在註冊時指定所需的資源存取權限,授予其 Microsoft Graph 授權呼叫(例如 User.Read)與 Azure Service Management API (user_impersonation)。

範例 13:建立帶有重定向 URI 的網頁應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'
$web = @{
    redirectUris = @("https://contoso.com/auth", "https://contoso.com/auth/callback")
    implicitGrantSettings = @{
        enableAccessTokenIssuance = $true
        enableIdTokenIssuance = $true
    }
    logoutUrl = "https://contoso.com/logout"
}

New-EntraApplication -DisplayName "Contoso Web App" -Web $web

此指令建立一個帶有重定向 URI 及隱含授權設定的網頁應用程式。

範例 14:建立一個帶有支援與行銷 URI 的網頁應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'

$informationalUrl = @{
    marketingUrl = "https://contoso.com/marketing"
    privacyStatementUrl = "https://contoso.com/privacy"
    supportUrl = "https://contoso.com/support"
    termsOfServiceUrl = "https://contoso.com/terms"
}

New-EntraApplication -DisplayName "Contoso Pay Portal" -InformationalUrl $informationalUrl

此指令建立一個包含支援與行銷網址的應用程式,幫助使用者與管理員在同意期間或 Microsoft Entra 入口網站中識別並信任該應用程式。

範例 15:建立帶有可選權利要求的應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'

$optionalClaims = @{
    idToken = @(
        @{
            name = "email"
            source = $null # user, directory, $null
            essential = $true
            additionalProperties = @{}
        }
    )
    accessToken = @(
        @{
            name = "roles"
            source = $null # user, directory, $null
            essential = $false
            additionalProperties = @{}
        }
    )
}

New-EntraApplication -DisplayName "Contoso Claims App" -OptionalClaims $optionalClaims

此指令建立一個應用程式,並可選擇性聲明,例如 email 、ID tokens 中的 upn(userPrincipalName)聲明,以及存取權杖中的 sid(session ID)聲明,用於自訂會話追蹤與使用者身份解析。

範例 16:建立帶有家長監控設定的應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'

# Define parental control settings
$parentalControlSettings = @{
    countriesBlockedForMinors = @("DE", "FR")   # ISO country codes
    legalAgeGroupRule = "RequireConsentForMinors"
}

# Create the app with parental control settings
New-EntraApplication -DisplayName "Contoso Kids Stream" `
    -SignInAudience "AzureADandPersonalMicrosoftAccount" `
    -ParentalControlSettings $parentalControlSettings

此指令建立一個帶有家長控制設定的應用程式。 例如,為了符合合規要求,它可能會限制像「Contoso Kids Stream」這類串流應用程式的存取,適用於德國和法國等特定國家的兒童。

範例 17:建立一個帶有憑證憑證的應用程式

Connect-Entra -Scopes 'Application.ReadWrite.All'
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Certificates\MyCertificate.cer")
$thumbprint = $cert.Thumbprint
$base64Cert = [Convert]::ToBase64String($cert.RawData)

$keyCred = @{
    CustomKeyIdentifier = $thumbprint
    Type = "AsymmetricX509Cert"
    Usage = "Verify"
    Key = $base64Cert
    DisplayName = "App Certificate"
    StartDateTime = [DateTime]::UtcNow
    EndDateTime = [DateTime]::UtcNow.AddYears(1)
}

New-EntraApplication -DisplayName "Contoso Certificate App" -KeyCredentials @($keyCred)

此指令建立一個帶有憑證憑證的應用程式。

參數

-AddIns

為應用程式定義自訂行為擴充功能。

參數屬性

類型:

System.Object[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-AdditionalProperties

自訂屬性可直接傳送至 Microsoft 圖形 API。

參數屬性

類型:Hashtable
預設值:None
支援萬用字元:False
不要顯示:False
別名:身體, 屬性, BodyParameter

參數集

CreateWithAdditionalProperties
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Api

應用程式的 API 設定,包括 OAuth2 權限範圍和應用程式角色。

參數屬性

類型:Microsoft.Graph.PowerShell.Models.MicrosoftGraphApiApplication
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-AppRoles

為應用程式定義的一系列應用程式角色。

參數屬性

類型:

System.Collections.Generic.List`1[Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppRole]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-DisplayName

應用程式在 Microsoft Entra ID 中的顯示名稱。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-GroupMembershipClaims

配置群組聲稱以使用者或 OAuth 2.0 存取權杖發出的資訊。 有效值: None, SecurityGroup, All。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-IdentifierUris

在 Azure AD 中唯一識別應用程式的 URI。

參數屬性

類型:

System.Collections.Generic.List`1[System.String]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-InformationalUrl

包含更多應用程式資訊(行銷、服務條款、隱私等)的網址。

參數屬性

類型:Microsoft.Graph.PowerShell.Models.MicrosoftGraphInformationalUrl
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-IsDeviceOnlyAuthSupported

指定此應用程式是否支援沒有使用者的裝置驗證。

參數屬性

類型:

System.Nullable`1[System.Boolean]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-IsFallbackPublicClient

指定該應用程式是否為公開客戶端。 若未設定,預設行為為 false。

參數屬性

類型:

System.Nullable`1[System.Boolean]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-KeyCredentials

與申請相關的憑證憑證收集。 每份證件應包含:

  • CustomKeyIdentifier:(可選)憑證指紋
  • DisplayName:(可選)憑證的友善名稱
  • EndDateTime:UTC的到期日與時間
  • 說明:Base64 編碼的憑證資料
  • StartDateTime:UTC開始日期與時間
  • 類型:憑證類型,通常為「AsymmetricX509Cert」
  • 用途:憑證的用途,通常是「驗證」

參數屬性

類型:

System.Object[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-OptionalClaims

可選的權利要求設定包含在存取權杖與 ID 權杖中。

參數屬性

類型:Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaims
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ParentalControlSettings

指定應用程式的家長控制設定。

參數屬性

類型:Microsoft.Graph.PowerShell.Models.MicrosoftGraphParentalControlSettings
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-PasswordCredentials

與應用程式相關聯的密碼認證集合。

參數屬性

類型:

Microsoft.Graph.PowerShell.Models.MicrosoftGraphPasswordCredential[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-PublicClient

公開用戶端應用程式(行動裝置或桌面版)的設定。

參數屬性

類型:Microsoft.Graph.PowerShell.Models.MicrosoftGraphPublicClientApplication
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-RequiredResourceAccess

應用程式對其他資源(如 Microsoft Graph)所需的 API 權限。

參數屬性

類型:

Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-SignInAudience

定義了本應用支援的帳號。 有效值: AzureADMyOrg、 AzureADMultipleOrgs、 AzureADandPersonalMicrosoftAccount、 PersonalMicrosoftAccount。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Tags

可用來分類與識別應用程式的自訂標籤。

參數屬性

類型:

System.Collections.Generic.List`1[System.String]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-TokenEncryptionKeyId

指定來自 keyCredentials 集合的公鑰 keyID 用於令牌加密。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Web

網頁應用程式的設定,包括重定向 URI 和登出 URL。

參數屬性

類型:Microsoft.Graph.PowerShell.Models.MicrosoftGraphWebApplication
預設值:None
支援萬用字元:False
不要顯示:False

參數集

CreateApplication
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

CommonParameters

此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。

輸入

None

這個 cmdlet 不接受管線輸入。

輸出

PSCustomObject

回傳一個代表已建立 Microsoft Entra 應用程式的自訂物件。

備註

  • 此指令小組需要 'Application.ReadWrite.All' 權限範圍。
  • 使用憑證憑證時,請確保正確的憑證管理流程:
    • 使用強密鑰大小(RSA 2048 位元或以上)
    • 安全儲存私鑰
    • 在證書到期前實施輪替
  • 密碼憑證(用戶端秘密)應該只在憑證無法使用時使用。
  • 關於安全最佳實務,請考慮:
    • 在分配 API 權限時採用最低權限原則
    • 限制應用程式角色只做必要的部分
    • 敏感應用程式使用條件存取政策
    • 實施適當的憑證輪替流程